这是我要写的内容:
public void Foo<T>(T parameter) {
otherObject.Bar<T>(parameter);
}
Bar() 方法的签名是:
public void Bar<T>(T parameter) where T: class
所以我得到一个编译错误,因为 Foo 签名中的 T 没有相同的约束。不幸的是我不能写:
public void Foo<T>(T parameter) where T: class {
otherObject.Bar<T>(parameter);
}
因为 Foo 正在实现一个在外部接口中定义的方法。问题是:
我可以在调用 Bar 之前以某种方式在方法 Foo 中转置 T (注意,我可以确定 T 总是一个类——我只需要通过编译器)。
我发现的唯一方法是使用反射,但我想知道我是否缺少一个更简单的技巧。