我知道我可以調用一個通用的擴展方法C#函數調用
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);
,而不必說
Result result = Convert<Input, Result>(input)
隨着一個分機ension方法,它看起來是這樣的:
static TResult Convert<TResult, TInput>(this TInput Input)
您的意思是 其中T:Class1,IClass1,new() 其中U:Class2,IClass2,new() ? – gabba
我相信他所要求的是一種調用Convert的方法,只需要指定「result」類型參數並讓編譯器推斷「input」類型參數,即「Result result = Convert(input);'我們在哪裏知道Input類型的輸入,而不必說'Result result = Convert (input)'。 –
如果我的推論是正確的,檢查這個問題的答案:http://stackoverflow.com/questions/9354288/c-why-doesnt-generic-type-inference-work-when-there-are-multiple-type- argumen –