2016-08-02 9 views
2

インターフェイスに関するこの問題を解決するには?私はこの変数が必要であると思います。インターフェイス固有のプロパティ

public interface Action 
{ 
    void execute(); 
} 

public A:Action 
{ 
    public int misteriousNumber; 

    void execute() 
    { 
     int iUseMisteriousNumber = misteriousNumber; 
    } 
} 

public B:Action 
{ 
    void execute() 
    { 
     //I use nothing. 
    } 
} 

//Some Class... 
static void Main(string[] args) 
{ 
    foreach(Action action in SecretRepositoryOfTheActions.actions) 
    { 
     if(action is A) 
      (SomeTypeOfCasting to A)action.misteriousNumber=13;    
     action.execute(); 
    } 
} 

単に「A」クラスは、このプロパティそれ(鋳造、ないのインターフェイス他の実装)にアクセスするために使用するものではありません、他のActionクラスを持っていますか?

+0

あなたは何をしたいですか?具体的に。 –

答えて

5

あなたが最初isと種類を確認、それをキャストする必要があります。

foreach(Action action in SecretRepositoryOfTheActions.actions) 
{ 
    if(action is A) 
     ((A) action).misteriousNumber = 13; 
     action.execute(); 
} 

あなただけ(ケースではないようです)A -objectsを処理したい場合:

foreach(A a in SecretRepositoryOfTheActions.actions.OfType<A>()) 
{ 
    a.misteriousNumber = 13; 
    a.execute(); 
} 
+0

ありがとう、C#で新しい: – JamesB

+0

2番目の提案は将来のニーズに素晴らしいです。 – JamesB

関連する問題