2010-11-19 14 views
1

私は、このようなインタフェースを、一致するTypeBuilderでビルドタイプ::動的に作成されたオブジェクトのメソッドを動的に呼び出せないのはなぜですか?

interface IFoo 
{ 
    int Property{get;} 
} 

私のコードはGET_PROPERTY方法を構築しています。私が作成したオブジェクトをIFooとしてキャストすると、すべてが機能します。しかし、私はオブジェクトを動的として使用すると、コードは私のIFooがget_Propertyを実装していないと不平を言っています。なぜこれが起こっているのですか?実行時に構築された型で動的な機能を使用できないのですか?

答えて

1

dynamicはパブリックAPIを使用します。 TypeBuilderを使用している場合、にはというメソッドがあり、そのメソッドの実装としてマークされている可能性があります。その場合は、(本質的に)明示的なインターフェイス実装であり、発見できないものはdynamicです。 dynamicを使用するには、おそらくPropertyBuilderとパブリックプロパティが必要で、プロパティ実装メソッドがインターフェイス実装としてマークされています。比較のために

dynamicもで失敗します:

class Foo : IFoo { 
    int IFoo.Property { get {return 5;}} 
} 
+0

うわー、高速応答のための感謝を!しかし、それはかなり駄目です。私は私のアヒルのテーパでもう少し仕事をしなければならないと思う。 C#を動的言語にすることは本当に難しいと思います。 –

関連する問題