首先,有很多这样的问题,也许有些OP甚至都在问这个完全相同的问题.问题是这些问题的答案(接受与否)都没有回答这个问题,至少没有我能找到的问题.
如何确定一个类直接声明的接口,而不是由父类或声明的接口继承的接口?
例如
interface I {}
interface W : I {}
class C : W {}
class D : C, I {}
class E : D {}
Run Code Online (Sandbox Code Playgroud)
结果:
C 声明 W D 声明 IE 宣布无可接受的解决方案可能要求接口至少具有一种方法.
如果您认为这是不可能的,请注意不要犯这个错误,这实际上可以做到.
在InterfaceMap处理许多案件,但不是所有的(我给由下面不可解的例子InterfaceMap).我有一个想法,但不知道如何实现它,是反编译类的字节码,看看声明什么,因为ILSpy等工具正确识别每个案例!如果你喜欢这个想法,请给我一个链接到这个领域的更多信息.
我希望有些人会建议我清理我的设计.如果这不是您的论点,那么帖子的其余部分与您无关.
我项目的一部分目的是跟踪给定类型的潜在代码路径(在运行时).为了以编程方式确定将在目标类型上调用哪个方法,而不实际调用该方法或创建目标类型的实例,知道目标类型的声明接口是确定性地解决此问题的必要条件."不,"你说?考虑:
interface I { int Foo(); }
class C : I { public int Foo() { return 1; } }
class D : C { public new int Foo() { return 2; …Run Code Online (Sandbox Code Playgroud)