那么,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; }
}
如果更换的属性不能转换为字典,那么你在谈论作出真正改变你的类的外部接口。我不相信有任何东西可以替代咬人的子弹,并且在没有向后兼容性的情况下做出改变。我可以给你的唯一提示是使新属性与旧属性名称不同:您可以使用“查找文件”来查找需要更改的代码,并且会导致编译器错误你会得到清楚而明确的。