接口特定属性

时间:2016-08-02 07:45:08

标签: c# interface

如何解决接口问题?我想我需要在这个特定类中使用这个变量(和其他一些变量)。

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' class有这个属性而不是其他Action类用来访问它(转换,而不是接口其他实现)?

1 个答案:

答案 0 :(得分:5)

你必须投了它,首先用is检查类型:

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

如果您只想处理A - 对象(似乎并非如此):

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