2016-08-02 45 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