如何管理列表的数量一般?

时间:2016-02-19 14:17:33

标签: c# generics

我必须管理多个列表,但不确定这是正确的解决方案。 它看起来很难维护......

是否有更一般的解决方案?

List<myAClass> A
List<myBClass> B
List<myCClass> C
...

public void init<T>(this T target)
{
    switch(target.GetType().GetGenericArguments()[0].Name)
    {
        case "myAClass":
            'do Z for A'
            break;

        case "myBClass":
            'do Z for B'
            break;

        case "myCClass":
            'do Z for C'
            break;
    }
}

1 个答案:

答案 0 :(得分:0)

通常在这些情况下我会尝试创建一个地图(又名Dictionary)。有点像这样:

    Dictionary<Type, Action<object>> myMap = new Dictionary<Type, Action<object>>
    {
        {typeof(myAClass), list =>{ /* YOUR METHOD/LAMBDA/ETC HERE  */ }},
        {typeof(myBClass), list =>{ /* YOUR METHOD/LAMBDA/ETC HERE  */ }},
        {typeof(myCClass), list =>{ /* YOUR METHOD/LAMBDA/ETC HERE  */ }},
    };

    public void Init<T>(T target)
    {
        if (myMap.ContainsKey(typeof (T)))
        {
            myMap[typeof (T)](target);
        }
    }

注意:我还没有尝试编译此代码,也在那里 我是如何将List<T>作为一个普通的旧物体传递给你的一个轻微的代码味道(所以你需要再次把它再投回)。在我的辩护中,这是3分钟的答案......; - )