【发布时间】:2011-02-16 14:33:08
【问题描述】:
问题在于 Type.GetInterfaces() 返回一个类实现的所有接口,这包括由继承的基类定义/实现的任何接口。当我试图找出一个类在本地引用/实现的接口时遇到了问题(因此不包括在基类中引用/定义的任何接口)。
我想做类似于 type.GetProperties() 的事情,它可以采用 BindingFlags,所以下面的代码将获取在被引用的类型(并且在基类中声明的所有属性都被排除在外)。
type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly)
我尝试了以下方法,但由于“.DeclaringType”始终为空而失败。
foreach (var implementedInterface in type.GetInterfaces())
{
if (implementedInterface.DeclaringType == type)
{
locallyDefinedInterfaces.Add(implementedInterface);
}
}
【问题讨论】:
-
你到底为什么要这样做?
-
@DJClayworth:你的意思是,“你为什么要这样做,然后我可以建议另一种方式?”。这是为了帮助一些从头开始学习 .NET 和 OO 的新员工,这样他们就可以安全地对类进行更改,因为他们知道如果类定义没有改变,那么从这个角度来看他们是可以的。我同意断言/测试这一点通常是矫枉过正的,但在这种情况下,在团队中已经决定这种级别的测试至少在短期内是有益的。在大多数情况下,这些测试只花了很短的时间来编写
标签: c# reflection