重构字典,更改键类型
本文关键字:类型 字典 重构 | 更新日期: 2023-09-27 17:58:21
我正在重构一个在整个系统中使用Dictionary<int, SomeInterface>
的C#库。我需要将键类型从int更改为string,并使用Dictionary<string, SomeInterface>
,我正在进行数十次更改。如何做得更好,如何在一个地方定义类型并在任何地方使用它,这样,如果我以后需要更改它,我可以在一个位置更改它?
我已经在接口中添加了一个GetKey()方法。
编辑:该库在其他DLL中使用,我想将可能的更改限制为仅一个库。这是一个敏捷的商店,所以我们需要为变化做好准备。
如果交换键的类型对您来说很重要,请考虑使用一个封装底层键的自定义类。
例如public class Key { public Key(object adaptee) { ... } }
记住要实现Equals()和GetHashCode(),并且只委托给底层对象。
我不确定这是否有助于您的特定场景,但总的来说,Resharper是一个非常棒的工具,可以帮助您进行这些类型的更改。
创建您自己的keyType,即:
- 结构
- 包含int字段
- 具有到int的转换器/从int的转换器(标记为已过时)
- 具有调用字段上方法的GetHashCode()和Equal()方法
- 开始使用keyType
- 使用过时的编译器警告来指导您
- 一旦所有Dictionarys都使用了新的keyType,并且您没有收到更多的obdelete警告,则转换keyType内部字段的类型