那麼,Dictionary<T,U>
確實實現IEnumerable<KeyValuePair<T,U>>
,所以任何想要使用IEnumerable可以引用Dictionary屬性,它會工作。既然你想做出這樣的改變,我假設你想做一些字典不允許的事情,也許是重複鍵。
如果替換屬性可以轉換爲字典,我會做這樣的事情。你有沒有坐在新房產旁邊的舊房產,並處理舊房產的轉讓和吸引人。請注意,如果MyLegacyProperty的用例檢索它,對其進行修改並將其設置回來,則此模式將失敗;在這種情況下,你需要做類似ObservableCollection的事情。 (是否有ObservableDictionary?)
public class LegacyObject
{
public Dictionary<string, string[]> MyLegacyProperty
{
get { return ConvertMyNewProperty(); }
set { this.MyNewProperty = ConvertMyLegacyProperty(value); }
}
IEnumerable<KeyValuePair<string, string[]>> MyNewProperty { get; set; }
}
如果更換的屬性不能轉換爲字典,那麼你在談論作出真正改變你的類的外部接口。我不相信有任何東西可以替代咬人的子彈,並且在沒有向後兼容性的情況下做出改變。我可以給你的唯一提示是使新屬性與舊屬性名稱不同:您可以使用「查找文件」來查找需要更改的代碼,並且會導致編譯器錯誤你會得到清楚而明確的。