如何解决这个接口(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();
}