2015-12-05 25 views
7

我使用VS 2015.當我創建一個新類並嘗試使用快捷鍵「Ctrl +」實現接口時。例如, 級StarShip:IStarShip 然後我使用「Ctrl +」。並選擇工具界面。它按字母順序實現屬性和方法!是否有一種簡單的方法可以按照它們在界面中的順序來實現它們,還是應該手動執行它們?我還沒有resharper,所以這不是一個選項。如何實現不按字母順序的接口屬性

回答

1

VS'implements interface'功能顯然使用了反射來生成代碼,反射API中沒有任何內容保證各個調用返回的成員順序。我們無法控制用於實現接口的反射順序或VS代碼生成器,所以我們不能改變它的工作方式。

基本上唯一的選擇是使用像resharper這樣的VS擴展來代替實現接口功能。

+0

但爲什麼VS2013的行爲不同? –

+0

如果枚舉一個接口的成員(例如'typeof(IList).GetMembers()'),那麼結果會非常無序。我想有人認爲,它會改善事情有字母順序,而不是你以前得到的隨機順序。那或者他們在之前做了排序的代碼中遇到了問題,並且放棄了按照字母排序的方式。我沒有對開發者的線路,所以我不能肯定地說。 – Corey

+5

當您使用VS2013來實現接口(生成代碼)時,它將按照它們在接口中定義的順序放置方法。 OP的問題似乎就是爲什麼VS2015中不會發生這種情況,以及如何可能的話,例如VS2013。 –