2017-08-30 27 views
0

我正在寻找一个很好的实践/想法如何为我的解决方案写一个干净的代码。 比方说,我有类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(); 
    ..... 
} 

它看起来OK,如果我在TypeEnum有一个或两个值,但不幸的是我将拥有约30 ~~和我认为它看起来糟透了~~其他30。如何让它变得更好?有没有人遇到过这样的问题?

回答

1

您可以使用类型Dictionary<SomeEnumType, Action>

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

actions[SomeEnumType.SomeVal](); 
+0

是的,我知道这种方法的字典,但是这是一个好的做法呢?如果我不得不使用30个元素创建这样一本字典,那么它会不会被认为是一种坏习惯?只是问,因为当我使用这种技术时,我已经有了4-5个元素,从来没有更多。但我是初学者,所以只是问:) – CSharpBeginner

相关问题