Как я узнаю, что PropertyInfo имеет тип ICollect <> - Reflection и GenericType - PullRequest
0 голосов
/ 21 октября 2011
class Abc {
    public Mycollection<Person> Persons { get;set; }
}

class MyCollection<T> : ICollect<T> { ... }

Я использую отражение, получая PropertyInfo ABC.Persons.

Я хочу знать, относится ли PropertyInfo к типу ICollect <> - как мне это сделать?

1 Ответ

1 голос
/ 21 октября 2011

Это похоже на: Как определить, является ли тип другим общим типом

public static bool IsAssignableToGenericType(Type givenType, Type genericType) {
var interfaceTypes = givenType.GetInterfaces();

foreach (var it in interfaceTypes)
    if (it.IsGenericType)
        if (it.GetGenericTypeDefinition() == genericType) return true;

Type baseType = givenType.BaseType;
if (baseType == null) return false;

return baseType.IsGenericType &&
    baseType.GetGenericTypeDefinition() == genericType ||
    IsAssignableToGenericType(baseType, genericType);

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...