一般如何管理列表数量
本文关键字:列表 管理 何管理 | 更新日期: 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 分钟的答案... ;-)