我有這樣的方法:不容有兩種方法具有相同簽名但不同的泛型約束
public IEnumerable<MyType> DoSomething<TResult>(Func<MyType, TResult> func)
where TResult : AnotherType
現在我想這個方法也出現IEnumerable<AnotherType>
。所以我寫了這個,這顯然doesn't編譯:
public IEnumerable<MyType> DoSomething<TResult>(Func<MyType, TResult> func)
where TResult : IEnumerable<AnotherType>
我得到的編譯器錯誤:
Member with the same signature already declared
我讀Member with the same signature already defined with different type constraints與另一返回類型交易會員。然而,在我的例子中我不區分在方法的返回類型,但其PARAM列表這是擺在首位Func<MyType, TResult>
,並在第二個Func<IEnumerable<MyType>, TResult>
上。但編譯器無法處理這個問題。
有其他的方法相比,第二個例子有另一種方法,叫什麼名字?
通用約束不是方法簽名的一部分,因此不能創建具有不同約束TEO相同的方法。 –
如果你無論如何定義的類型,爲什麼通用所有,而不是在另一個是'Func鍵'在一個和'Func鍵>'? –
@ Dr.Coconut我已經在我的這篇文章中提到過。 – HimBromBeere