我有一个用TypeBuilder
构建的类型来匹配接口,比如::
interface IFoo
{
int Property{get;}
}
我的代码构建了get_Property方法。如果我将构建的对象转换为IFoo,一切正常。但是,当我将对象用作动态时,代码会抱怨我的IFoo没有实现get_Property。为什么会发生这种情况,我是否可以将动态功能与运行时构建的类型一起使用?
答案 0 :(得分:1)
dynamic
使用公共API。如果您正在使用TypeBuilder
,则可能只是提供了一个方法,并将其标记为实现该方法,在这种情况下,它(基本上)是一个显式的接口实现,并且不可发现dynamic
。要使用dynamic
,可能需要PropertyBuilder
和公共属性,属性实现方法也标记为接口实现。
为了进行比较,dynamic
也会失败:
class Foo : IFoo {
int IFoo.Property { get {return 5;}}
}