2

XMLからクラス名を動的に引き出すことができるようにActivator.createInstanceを活用したいプロジェクトがあります。クラスは、機能に応じて、2つのインターフェイスのうち少なくとも1つにサブスクライブする必要があります。私の質問は、Activator.CreateInstanceを使用するときに、インスタンス化したクラスがサブスクライブしているインターフェイスを確認するための最良の方法は何ですか?キャストをトライキャッチでラップする必要がありますか?それはひどく遅いようです。たぶん、それをobjにキャストしてから、GetTypeを呼び出して、それをインターフェイス名と比較する必要がありますか?どんな助けでも大歓迎です!

4

1 に答える 1

5

それで、あなたはすでにオブジェクトを作成しましたか?is次に、演算子として使用するのと同じくらい簡単です。

var obj = Activator.CreateInstance(...);
bool objIsIMyInterface = obj is IMyInterface;

を作成した時点でテストする場合はSystem.Type、次を使用できますType.IsAssignableFrom

Type type = ...
bool typeIsIMyInterface = typeof(IMyInterface).IsAssignableFrom(type);
于 2013-01-21T14:49:03.147 に答える