【问题标题】:List of similar objects - invoke different method for each element相似对象列表 - 为每个元素调用不同的方法
【发布时间】:2017-08-30 15:53:02
【问题描述】:

我正在寻找如何为我的解决方案编写干净代码的良好做法/想法。 假设我有 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 其他值看起来会很糟糕。如何让它变得更好?有没有人遇到过这样的问题?

【问题讨论】:

    标签: c# design-patterns coding-style


    【解决方案1】:

    您可以使用Dictionary&lt;SomeEnumType, Action&gt; 类型的字典

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

    【讨论】:

    • 是的,我知道这种方法,但这是一个好习惯吗?如果我必须用 30 个元素初始化这样的字典,这不会被认为是一种不好的做法吗?只是问一下,因为当我有大约 ~~4-5 个元素时,我正在使用这种技术,再也没有更多了。但我是初学者,所以只是问:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 2023-03-12
    • 2015-09-24
    相关资源
    最近更新 更多