type.IsInterface为接口返回false

时间:2015-11-13 05:40:32

标签: c# unit-testing reflection rhino-mocks

我有一个为给定类型返回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来生成传递给此函数的接口模拟。

以下是代码,我如何调用此函数...

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

在此,数据是IdataCache.

的对象

1 个答案:

答案 0 :(得分:2)

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

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