2010-12-19 7 views
2

私はITransactionインターフェースを持っており、Class1、Class2はすべてこのインターフェースを実装しています。実行時に、Class1またはClass2のオブジェクトをITransactionの参照に割り当てます。インターフェイスタイプに割り当てられている場合は、実際のオブジェクトタイプを取得できますか?

ITransaction itransaction = new Class1();または

ITransaction itransaction = new Class2(); 

それは、itransaction参照に割り当てられた実際のタイプを知ることができる反射または何か他のものを使用して?

+0

を書くことができますが、 'typeof'を試してみましたまたは '.GetType'? – Lazarus

答えて

6

インターフェイスインスタンスでGetType()を呼び出して、有効なタイプを取得できます。

(これはあなたがCOMとMarshalByRefObjectインスタンスのリモートインタフェースのための期待戻らないかもしれないが、それは別のトピックであることに注意してください。)

+0

ありがとうございます。 :)私はその方法を知っていた。私はコンクリートクラスにしか使えないと思った。だから、それはMarshalByRefObjectですか? – Tebo

+0

リモートインタフェースインスタンスを使用している場合は、実際にインタフェースを実装しているプロキシオブジェクトがあるため、 'GetType()'を使用してもサーバ上の「元の」オブジェクト型は返されません。 – Lucero

3

あなたは

if (itransaction is Class2) 
関連する問題