У меня есть метод, который возвращает propertyInfo
для данного типа. Я вызываю этот метод с объектом интерфейса, но type.IsInterface
возвращает false.type.IsInterface return false для интерфейса
public IEnumerable<PropertyInfo> GetProperties(Type type)
{
if (!type.IsInterface)
return type.GetProperties();
return (new Type[] { type })
.Concat(type.GetInterfaces())
.SelectMany(i => i.GetProperties());
}
Может кто-нибудь сказать мне, что здесь не так?
Я использую rhino mock для генерации интерфейса, который переходит к этой функции.
Вот код, как я звоню эту функцию ...
var info = GetProperties(pCache.Data.GetType())
в этом, данных является объектом IdataCache.
Показать код, где вы вызываете этот метод. –
обновленный вопрос. – Abhash786
У вас есть экземпляр ('pCache.Data'). Это объект, экземпляр класса (вы не можете создать экземпляр интерфейса). ['GetType'] (https://msdn.microsoft.com/en-us/library/system.object.gettype (v = vs.110) .aspx) возвращает этот тип класса. Вы не можете называть 'GetType' ни на чем, и он вернет интерфейс. Вы можете вызвать свой метод, как 'GetProperties (typeof (IFoo))', который передаст интерфейс этому методу. В этом случае 'IsInterface' вернет true. –