一般如何管理列表数量

本文关键字:列表 管理 何管理 | 更新日期: 2023-09-27 18:35:19

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

是否有任何解决方案可以更普遍地做到这一点?

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;
    }
}

一般如何管理列表数量

通常在这些情况下,我会尝试创建一个地图(又名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 分钟的答案... ;-)