我有两个通用方法 -
public CustomObject<T> MethodA<T>(T arg1) where T : class
{
...
return MethodB<T>(arg1);
}
public CustomObject<R> MethodB<R>(R arg2) where R : class, IInterface
{
...
return new CustomObject<R>();
}
问题显然是我不能使用未实现IInterface接口的类型(T)来调用MethodB。但如果我这样做呢 -
public CustomObject<T> MethodA(T arg1) where T : class
{
...
var casted = arg1 as IInterface;
if (casted != null)
{
return MethodB<T>(casted);
}
}
显然这段代码无法编译通过,但是它应该能够编译成功,是吧?我该如何让编译器知道我知道
casted
实现了IInterface
并且是一个类,所以调用MethodB
是正确的呢?这里的大问题可能在于我试图返回CustomObject<T>
。