我有一个父类 Command,它有一个 const 名称和一个名为 execute 的虚拟方法;两者都被儿童覆盖。我有一个方法,它接受一个命令列表并返回一个可能修改过的命令列表。
要确定是否应该更改输入命令列表,我需要在更改此列表之前知道列表中每个命令的类型。但问题是我必须使用 new 关键字才能为派生类创建一个与父类同名的静态成员,但我希望能够静态引用命令的名称。
我正在尝试做的示例:
public List<Command> ReplacementEffect(List<Command> exChain)
{
for(int index = 0; index < exChain.Count; index++)
{
if(exChain[index].Name == StaticReference.Name)
{
//Modify exChain here
}
}
return exChain;
}
使用 exChain[index].GetType() 的问题是我必须实例化另一个该类型的对象,以检查哪个是浪费、耗时且不直观。另外,我必须从 Name 中删除 const 修饰符。
编辑:
class Command
{
public const string Name = "Null";
public virtual void Execute()
{
//Basic implementation
}
}
class StaticReference : Command
{
public new const string Name = "StaticRef";
public override void Execute()
{
//New implementation
}
}