我正在尝试编写以下内容:
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始终是一个类 - 我只需要通过编译器即可)。
我找到的唯一方法是使用反射,但我想知道是否有我错过的更简单的技巧。