如何检查某个对象是否符合(但未实现)某个界面(例如Google Go中的内容:Interfaces are satisfied implicitly)?
例如:
class Foo
{
void Bar() { ... }
}
interface IBar
{
void Bar();
}
在这种情况下,课程Foo
会隐式/符合接口IBar
...
有没有办法检查这个(可能是反射)?
感谢。 : - )
答案 0 :(得分:2)
这称为duck typing,可以使用图书馆:DeftTech.DuckTyping
bool adheres = DuckTyping.CanCast<IBar, Foo>();
DynamicProxy也可能有帮助,或者您可以从其他项目中找到nuget包。
此功能不是由语言提供的,因此,正如您所猜测的,鸭子类型库在内部使用反射。如果您需要更多详细信息,DeftTech.DuckTyping是开源的。