2016-08-02 56 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'類有這個屬性沒有其他操作類什麼用來訪問它(鑄造,而不是接口其他實現)?

+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

第二個建議對未來的需求來說非常棒。 – JamesB