Skip to main content
 首页 » 编程设计

c#之接口(interface)特定属性

2024年02月27日15jirigala

如何解决这个接口(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”类具有此属性,其他 Action 类没有使用什么来访问它(强制转换,而不是接口(interface)其他实现)?

请您参考如下方法:

你必须强制转换它,首先用 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(); 
 }