Получение типа элемента подкласса List с помощью CecilC#

Место общения программистов C#
Ответить
Anonymous
 Получение типа элемента подкласса List с помощью Cecil

Сообщение Anonymous »

Я пишу код, который должен получить тип элемента из всех типов, прямо или косвенно реализуя ICollection. У меня есть следующий код:

Код: Выделить всё

var collectionInterfaceType = GetTypeHierarchy(type)
.SelectMany(t => t.Interfaces)
.Select(iface => iface.InterfaceType)
.OfType()
.FirstOrDefault(interfaceType =>
interfaceType.ElementType.FullName is "System.Collections.Generic.ICollection`1" or "System.Collections.Generic.IReadOnlyCollection`1");
if (collectionInterfaceType != null)
{
var itemType = collectionInterfaceType.GenericArguments[0];
// Do something with itemType
}
Согласно информации, которую я нашел в Интернете (например, этот ответ), itemType будет иметь конкретный тип элемента коллекции. Во многих случаях это работает правильно, но в следующем случае itemType — это просто T:

Код: Выделить всё

public class CustomCollection : List { }
Как получить конкретный тип элемента (т. е. System.String) в приведенном выше случае?

Подробнее здесь: https://stackoverflow.com/questions/798 ... with-cecil
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»