除了标题中的建议外,最有可能解决这个问题的方法更好。这是问题所在:
abstract class BaseClass
{
abstract public void DoSomething();
}
class ChildClass : BaseClass
{
public override DoSomething();
}
class OtherClass
{
//Here is what I want to do for two elements
ChildClass foo = new ChildClass();
SomeOtherChildClass bar = new SomeOtherChildClass();
foo.DoSomething();
bar.DoSomething();
}
我想为更多元素做这件事。我不想创建自己的变量,我不想为每个子类创建单独的列表。我实际上并不想知道什么是子类,只要它们继承BaseClass并拥有DoSomething()。所以我可以做类似的事情:myColelction.ForEach(i => i.DoSomething());到
我想我需要一些非常宽松的收藏品。我想到了新元素的IEnumable和Concatting,当然,当BaseClass是抽象的时候你不能这样做。
替代方案(我能想到)正在使用事件。但是可能有多个OtherClass实例,我不想触发我不应该触发的事情。也许我错了,但我对事件知之甚少。
答案 0 :(得分:2)
您只需要一个基类类型的列表,例如
List<BaseClass> myCollection
e.g。你可以做到
myCollection.Add(new ChildClass());
myCollection.Add(new SecondChildClass());
你可以
myCollection.Foreach(i => i.DoSomething());