Как получить тип элемента абсолютно любой коллекции (IEnumerable) C#?
Допустим, у меня есть объект массива или коллекции. Существует ли универсальный способ извлечь у них тип элемента? Вроде как все они реализуют IEnumerable и ICollection.
Ответы (2 шт):
Автор решения: Alexander Petrov
→ Ссылка
Полагаю, вам нужны обобщённые методы. Пример:
static void Main()
{
var arr = new string[] { "a" };
var list = new List<int> { 1 };
Method(arr); // System.String
Method(list); // System.Int32
}
static void Method<T>(IEnumerable<T> enumerable)
{
Console.WriteLine(typeof(T));
}
Автор решения: Antinet
→ Ссылка
Данным способом можно получить тип элемента любой коллекции.
static void Main()
{
var arr = new string[] { "a" };
var list = new List<int> { 1 };
GetElementType(arr); // System.String
GetElementType(list); // System.Int32
Console.ReadKey(true);
}
static void GetElementType(IEnumerable enumerable)
{
Console.WriteLine(enumerable.GetType().GetInterface("IEnumerable`1").GetGenericArguments()[0]);
}