创建从抽象父类继承的不同类型的集合

时间:2013-12-23 12:01:13

标签: c# events inheritance collections

除了标题中的建议外,最有可能解决这个问题的方法更好。这是问题所在:

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实例,我不想触发我不应该触发的事情。也许我错了,但我对事件知之甚少。

1 个答案:

答案 0 :(得分:2)

您只需要一个基类类型的列表,例如

List<BaseClass> myCollection

e.g。你可以做到

myCollection.Add(new ChildClass());
myCollection.Add(new SecondChildClass());

你可以

myCollection.Foreach(i => i.DoSomething());