7
製作一個泛型類型約束,我想知道這是可能的:上Func鍵<T>
public class Foo<T> where T : Func<T>
或
public class Foo<T> where T : Func<>
這似乎是編譯器告訴我這是不可能的。我想我可以在構造函數中拋出一個運行時異常,但希望它有一個編譯器錯誤。
這樣做的任何方法?
製作一個泛型類型約束,我想知道這是可能的:上Func鍵<T>
public class Foo<T> where T : Func<T>
或
public class Foo<T> where T : Func<>
這似乎是編譯器告訴我這是不可能的。我想我可以在構造函數中拋出一個運行時異常,但希望它有一個編譯器錯誤。
這樣做的任何方法?
不幸的是,它看起來像你運氣不好。 Func<>
和Action<>
都是委託類型,它們不能用作泛型約束。
這個答案概括起來相當不錯 C# Generics won't allow Delegate Type Constraints
這裏大概正確的解決方法就是接受'T',然後在課堂上使用'Func鍵'。 –
2014-10-04 22:30:23
我想過這個,但是我不得不像.NET人員創建17個重載來支持基本的Func的情況。 :)我知道這很愚蠢,只是想知道。 –
halivingston
2014-10-04 22:33:09
不要說這是一個好主意,但你可以關注這個https://roslyn.codeplex.com/discussions/543871線程,並在Roslyn中進行更改並使用該編譯器編譯你的代碼。 – mjsabby 2014-10-04 22:36:40