Ada*_*oll 2 c# silverlight .net-4.0 dynamic-keyword
我假设这是不可能的,但在进一步挖掘之前有办法做这样的事情:
public void ProcessInterface(ISomeInterface obj) {}
//...
dynamic myDyn = GetDynamic<ISomeInterface>()
ProcessInterface(myDyn);
Run Code Online (Sandbox Code Playgroud)
我看过一篇帖子争论它,但听起来它没有被包括在内.
一点上下文:通过COM公开的.Net程序集 - > Silverlight app消耗接口实现类.通过接口引用对象会很好.我真的不希望这是有意的......
不,dynamic不会让类型假装实现一个接口(即使它有,通过dynamic所有方法).传递它ProcessInterface基本上带走了dynamic.
dynamic取决于调用代码和实现对象一样多.甚至更多.
但是,您可以创建一个使用duck typing的接口包装器:
class Foo : IBar {
readonly dynamic duck;
public Foo(dynamic duck) { this.duck = duck; }
void IBar.SomeMethod(int arg) {
duck.SomeMethod(arg);
}
string IBar.SomeOtherMethod() {
return duck.SomeOtherMethod();
}
}
interface IBar {
void SomeMethod(int arg);
string SomeOtherMethod();
}
Run Code Online (Sandbox Code Playgroud)