类似对象的列表 - 为每个元素调用不同的方法

时间:2017-08-30 15:53:02

标签: c# design-patterns coding-style

我正在寻找一个好的做法/想法,如何为我的解决方案编写一个干净的代码。 我们说我上课了Foo:

public class Foo
{
    public SomeEnumType Type { get;set; }
    ....
}

我得到了这些元素的列表,如:

List<Foo> Foos

现在我想迭代我的列表并为任何EnumType调用不同的方法。现在我只是做这样的事情:

foreach (var x in Foos)
{
     if (x.Type == XXX)
        invoke first();
     else if (x.Type == YYY)
        invoke second();
     .....
}

如果我的TypeEnum中有一个或两个值,看起来没问题,但不幸的是我会有~~ 30而且我认为它会看起来很糟糕~~ 30其他。如何让它变得更好?有没有人以前遇到过这样的问题?

1 个答案:

答案 0 :(得分:1)

您可以使用Dictionary<SomeEnumType, Action>

类型的字典
var actions = new Dictionary<SomeEnumType, Action>()
{
    { SomeEnumType.SomeVal, ()=>{ Console.WriteLine("test"); } }
};

actions[SomeEnumType.SomeVal]();