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