class A { }
interface I { }
void GenericStuff<T>(T x) { }
void SpecificStuff<T>(T x) where T : A, I { }
void Start<T>(T x)
{
if (x is A && x is I)
SpecificStuff(x); // <---- Wrong type
else
GenericStuff(x);
}
我有上面说明的情况。在方法中Start()
,我得到一个参数x
,根据它的类型,我想调用GenericStuff()
或SpecificStuff()
方法。自然,类型约束阻止了我这样做,并且由于它们有两个,我无法通过强制转换来绕过它们。
有没有办法(缺乏反思)来实现这一点?