在編寫一個C#Metro DLL的輸出爲WinMD格式的時,我有一個公共類Id
。雖然它覆蓋Equals
,但不允許超載==
。在C#Windows運行時組件中,如何警告開發人員不要在公共類中使用==?
但是,這個相同的類在DLL內部使用,並且不可避免地使用LINQ,我發現自己編寫了.Where(x => x.Id == Ids.House)
,這顯然不起作用。
一個可能的解決方案是定義一個IdInternal
,它是內部的,可以覆蓋==
,然後將其包裝在Id
中。
如果沒有解決方案(我懷疑它會發生幾個類),有什麼辦法通過編譯/運行時錯誤警告開發人員,他們不應該使用==這個類?
重載(這不是重載)'=='適用於Win8 CP下的VS11 Beta。是什麼讓你覺得你不能這樣做? – svick
糟糕!感謝您指出了這一點。當您將輸出類型切換到WinMD時,您將獲得框架的受限子集。請參閱http://msdn.microsoft.com/en-us/library/windows/apps/hh977010(v=vs.110).aspx#OperatorOverloading「運行過載不允許」 – Jedidja