类型接口的IsInterface返回false

本文关键字:返回 false IsInterface 接口 类型 | 更新日期: 2023-09-27 18:21:48

我有一个方法,它为给定类型返回propertyInfo。我使用接口的对象调用此方法,但type.IsInterface返回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生成传递给该函数的接口mock。

这是代码,我是如何调用这个函数的。。。

var info = GetProperties(pCache.Data.GetType())

其中,Data是IdataCache. 的对象

类型接口的IsInterface返回false

PCache.Data是PCache.Data.GetType()的一个实例,它的类型不能是接口,必须是具体类型。

pCache.Data.GetType()将始终返回实例的类型,如果它是IdataCache,则IdataCache是一个具体类型