我知道可以调用通用扩展方法
public static object Convert<U>(this U value)
像这样(不需要
<Class1>
):Class1Instance.Convert()
但是有没有一种方法可以调用:
public static T Convert<U, T>(this U value)
where T : Class1, Interface1, new()
where U : Class1, Interface2, new()
{
/******/
}
使用Class1Instance.Convert<Class2>()
而不是Class1Instance.Convert<Class1, Class2>()
谢谢。
编辑:
重述/简化: 有没有一种方式可以实现:
Result result = Convert<Result>(input);
当我们知道输入类型为Input时,不必再说
Result result = Convert<Input, Result>(input)
使用以下类似于这样的扩展方法:
static TResult Convert<TResult, TInput>(this TInput Input)
Result result = Convert<Result>(input);
,我们知道input的类型是Input,而不是必须写成Result result = Convert<Input, Result>(input)
。 - Dan Josephnew
约束,你是对的。但是你的第二个假设是错误的。我将有多个转换方法,用于从 Class1 派生但实现不同接口的类。 - Nicolas VoronClass1
没有实现IClass1
接口?好的,泛型约束就有意义了。(名称暗示Class1
实现了IClass1
,下次考虑使用不同的示例名称。) - David Yaw