2011-02-09 5 views
3

に動的変数をキャストI(ここで<em>フー</em>と<em>バー</em>)、コンテキストに依存し、いくつかの種類のものとすることができるオブジェクトをiが格納動的変数が指定されたタイプ

dynamic myvar; 
myvar = new Foo(); 
//or 
myvar = new Bar(); 

FooとBarには異なるメソッドがあります。 MYVARのメソッドへのアクセスを取得するには 、私は

(Foo)myvar.mymethodoffoo(); 
(Bar)myvar.mymethodofbar(); 

のようなキャストを使用することは可能だと思った。しかし、それは働いていない、私は、この操作は、コードエディタで実行に解決されます(ダイナミック式)を取得します。

私は動的オブジェクトをキャストして、使用可能なメソッドとプロパティをエディタから取得する方法はありますか?

ありがとうございます。

+1

私はあなたのアプローチが最善である、私はむしろ強くインタフェースまたは共通の基本クラスを使用して変数を入力し確認していません。 –

+3

コンパイラに、呼び出しを静的に解決するキャストの形式で十分な情報を与えるつもりなら、なぜ* dynamic *型ですか?これは私には意味をなさない。動的な点は、コンパイル時に型が知られていないときに使用することです。 –

答えて

10

キャスト操作((SomeType)x)は、.よりもlower precedenceです。
したがって、コードは(Bar)(myvar.mymethodofbar()) —として解析され、メソッド呼び出し後にキャストが発生します。

あなたは括弧を追加する必要があります。

((Bar)myvar).mymethodofbar(); 
+0

うん!できます !ありがとうございます – eka808

+1

ニース!あなたが実際にそうでないときに私たちに言ってもらえますか? (だから私たちの残りの部分はいくつかの答えで絞ることができます) – tzup

+0

@tzup:午後11時から午前8時まで。 – SLaks

2
((Foo)myvar).mymethodoffoo(); 
((Bar)myvar).mymethodofbar(); 
関連する問題

 関連する問題