【发布时间】:2011-03-17 18:16:27
【问题描述】:
我需要将一个类型列表传递给一个方法,但我想确保(在编译时)它们都继承自 BaseType。 另外,我不知道要传递多少个类型。
所以我认为这是一个糟糕的方法:
public void DoSomething(params Type[] types)
所以我到现在为止所做的事情是这样的:
private void DoSomething(params Type[] types)
public void DoSomething<T1>()
where T1 : BaseType
{
DoSomething(typeof(T1));
}
public void DoSomething<T1, T2>()
where T1 : BaseType
where T2 : BaseType
{
DoSomething(typeof(T1), typeof(T2));
}
public void DoSomething<T1, T2, T3>()
where T1 : BaseType
where T2 : BaseType
where T3 : BaseType{...}
// and so on...
你明白了。 所以问题是:你能把这个做得更漂亮一点吗? 因为这不支持任意数量的类型。 在我的场景中,八种或更多类型并不少见。
我想将它用于this 类型的“魔法”,但调用者没有对容器的引用。
【问题讨论】: