我必须管理多个列表,但不确定这是正确的解决方案。 它看起来很难维护......
是否有更一般的解决方案?
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;
}
}
答案 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分钟的答案......; - )