我想創建一個通用的方法:通用類型約束禁止某些類型?
MvcHtmlString MyMethod<T>(this HtmlHelper html, string title, IEnumerable<T> value)
我在我的代碼中的許多變量,是List<T>
,IEnumerable<T>
,xxxCollection
,T[]
,等等。這個方法也有一個重載會採取非枚舉值。是否可以禁止類型參數約束中的特定類(如string
)?
我已經創建了一個超負荷這樣的:
MvcHtmlString MyMethod<T>(this HtmlHelper html, string title, object value)
此重載是良好的的單獨的值處理,但是處理值集合需要一個稍微不同的實現。但是,string
實現IEnumerable
,所以我的所有字符串變量都會被髮送到錯誤的重載,除非我能告訴編譯器它們應該被排除。
是我要去的路線。在我可以驗證我的結果之前(我正在重構整個視圖,去除與HTML混合的可能出錯的邏輯。)http://stackoverflow.com/questions/15577463/how-to-tell-ie - 忽略之前收到的格式不正確的html和渲染 - 不同) – Zarepheth 2013-03-25 18:39:46
+1。如果你想「排除」(作爲勸阻/防止),你可以將'string'超載標記爲過時。 – 2013-03-25 18:40:18
我只是想讓編譯器在遇到字符串而不是IEnumerable重載時使用'object'重載,所以我不會將任何標記標記爲過時。 – Zarepheth 2013-03-25 18:41:58