0

.NET4.0の新しいタイプである動的タイプを使用しました。

事前にタイプがわからないタイプを使用したいので、動的タイプを使用したいのですが、この可能なタイプすべてにいくつかの一般的なメソッドがあることは知っています。

私の場合、エンティティフレームワーク4.0で自己追跡エンティティを使用しており、すべてのエンティティにXXXとマークされたメソッドがあることを知っています(エンティティの状態を設定するため)。

作成した動的オブジェクトを介して、このエンティティの1つのプロパティにアクセスして設定できますが、MarkedAsXXXメソッドを実行しようとすると、オブジェクトがメソッドを定義していないという例外が発生します。

このメソッドにアクセスする方法を知りたいのですが。出来ますか?

元の値にアクセスしてこの値を現在の値に設定できる関数がありますが、エンティティをUnchengedとして設定する必要があるためです。

ありがとう。

4

2 に答える 2

2

事前にタイプがわからないタイプを使用したいので、動的タイプを使用したいのですが、この可能なタイプすべてにいくつかの一般的なメソッドがあることは知っています。

これは、これらの一般的なメソッドを使用してインターフェイスを作成し、関連するすべてのタイプにインターフェイスを実装させる必要があることを示しています。

作成した動的オブジェクトを介して、このエンティティの1つのプロパティにアクセスして設定できますが、MarkedAsXXXメソッドを実行しようとすると、オブジェクトがメソッドを定義していないという例外が発生します。

これは、明示的なインターフェイスの実装が原因である可能性があります。型に通常の方法でパブリックメソッドとして宣言されたメソッドがある場合、それは問題ないはずです。

これらの型で動的型付けを本当に使用したい場合は、MarkedAsXXXメソッドを宣言する基本インターフェースがありますか?これらのメソッドを呼び出す前にオブジェクトをキャストできますか?(私はエンティティフレームワークに精通していないので、それらのメソッドの詳細はわかりません。)

基本的に、動的型付けは、本当に必要でない限り避けようとします。これは、このようなエッジケースが原因の1つですが、明示的なインターフェイスの実装原因である場合は、そのインターフェイスへのキャストで問題ありません。

于 2012-08-18T18:22:40.903 に答える
0

動的に生成されたクラスへのインターフェイスを定義すると、面倒なリフレクション呼び出しなしでメソッドを呼び出すことができます。

于 2012-08-18T18:15:31.167 に答える