2013-11-15 83 views
2

我有一個通用類Foo<T>,我想約束T是一個enum類型。這可能在C#可能將泛型限制爲枚舉?

我已經試過

public class Foo<T> where T : enum // COMPILATION ERROR 

但這種方法似乎只對classstruct工作。

同樣地,試圖限制T到底層enum類型也不會工作:

public class Foo<T> where T : int // COMPILATION ERROR 

因爲int不是一個類或接口。


編輯我現在認識到類似的問題之前已經公佈,而最終這個問題可以被刪除。一個與我的問題更相關的問題,也包含與下面相同的答案,是this

+0

你說得對。我會刪除這個問題。無論如何,感謝那些提供了豐富答案的人。 –

+0

@AndersGustafsson公平競賽。 –

+0

@OndrejJanacek可以肯定,你的意思是非諷刺的,對吧?在這種情況下,謝謝。我* *有點擔心刪除這個問題,因爲其他人已經收到他們的答案upvotes。 –

回答

6

這在C#規範和實現中無效,但它在中是

喬恩斯基特做了庫來解決這個叫做跌宕的旋律:

https://code.google.com/p/unconstrained-melody/

雖然我從來沒有使用過它,所以我不能提供任何深入瞭解如何利用這一優勢。

+0

非常感謝指出這一點。由於我的問題顯然已經被陳述過了,所以我會刪除這個問題。希望你確定。 –

+0

@AndersGustafsson但這個答案以前沒有給過,有嗎?我想說,不要刪除 – dcastro

+0

@dcastro這個問題其實,它雖然不在上面提到的問題中,但我想。 [Here](http://stackoverflow.com/a/14160744/650012)是我找到的一個答案。我會嘗試將該問題添加到上面的帖子中。 –