重构字典,更改键类型

本文关键字:类型 字典 重构 | 更新日期: 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内部字段的类型