C# 如何在类中引入泛型类型?

C# 如何在类中引入泛型类型?,c#,generics,automated-refactoring,C#,Generics,Automated Refactoring,我需要通过从现有C#类中提取泛型类型参数来更改我的C#代码: 比如说,这个类名为Foo,类型为Bar 该类现在将是Foo Foo定义中出现的所有条均替换为T 我的代码库中任何地方出现的所有Foo都将替换为Foo 哪种现有工具可以为我做到这一点,或者让我轻松做到这一点? 到目前为止,我正在使用正则表达式搜索和替换,它完成了大部分工作,但这样很容易犯愚蠢的错误 (顺便说一句:如果你知道这个重构比“提取类型”更好的名称,请告诉我,这样我就知道该搜索什么了……这个重构应该命名为“引入泛型参数”,但我

我需要通过从现有C#类中提取泛型类型参数来更改我的C#代码:

比如说,这个类名为Foo,类型为Bar

  • 该类现在将是Foo
  • Foo定义中出现的所有条均替换为
    T
  • 我的代码库中任何地方出现的所有Foo都将替换为Foo
哪种现有工具可以为我做到这一点,或者让我轻松做到这一点? 到目前为止,我正在使用正则表达式搜索和替换,它完成了大部分工作,但这样很容易犯愚蠢的错误


(顺便说一句:如果你知道这个重构比“提取类型”更好的名称,请告诉我,这样我就知道该搜索什么了……

这个重构应该命名为“引入泛型参数”,但我不确定是否有工具能做到这一点。
您可以使用
NRefactory
编写访问者来重写代码,但默认情况下,它不会为您提供所有引用位置的高分辨率


也许可以尝试编写一个ReSharper插件?

这个重构应该命名为“引入通用参数”,但我不确定是否有任何工具可以做到这一点。
您可以使用
NRefactory
编写访问者来重写代码,但默认情况下,它不会为您提供所有引用位置的高分辨率



也许试着写一个ReSharper插件?

我刚刚发现一个现有的ReSharper插件确实包含这样一个重构:The

我刚刚发现一个现有的Resharper插件确实包含这样一个重构:The

@自由职业者,另一个问题是完全无关的…@自由职业者:这个问题是相关的,但它是关于如何让C#代码做一些事情;我的主题是如何更改C代码体。您想要得到什么作为输出?新组件?您应该能够通过将
class Foo
更改为
class Foo
,然后将
Bar
自动重命名为
T
来“自动化”前两点。(如果你找不到一体化的解决方案,这会减少你的工作量。)@自由职业者,这另一个问题是完全不相关的…@自由职业者:这个问题是相关的,但它是关于如何让C代码做些什么;我的主题是如何更改C代码体。您想要得到什么作为输出?新组件?您应该能够通过将
class Foo
更改为
class Foo
,然后将
Bar
自动重命名为
T
来“自动化”前两点。(如果你找不到一个一体化的解决方案,这应该会减少你的工作量。)这就是我的想法,但我现在的项目实际上不允许这样的讨论。这就是我的想法,但我现在的项目实际上不允许这样的讨论。它是一个插件集合。我还没有找到这样的。它是哪一个?它实际上是MakeMethodGeneric powertoy(所以会有一点整理,使整个类成为泛型)。哦,但是你可以从Codeplex获得源代码控制,并尝试修改它来完成整个类(还没有看过代码,所以不确定你必须有多大的勇气这么做)。我已经安装了它,但是我不知道如何使它的接口(无论它是什么)出现在我的测试类上。我不清楚,但不清楚如何读取它-例如,显然它没有在ICompiledElement方法上启用,但这意味着什么?嗯,我不能足够快地理解它,所以这次我使用了Perl脚本。但我将来会研究Resharper插件,它是一个插件集合。我还没有找到这样的。它是哪一个?它实际上是MakeMethodGeneric powertoy(所以会有一点整理,使整个类成为泛型)。哦,但是你可以从Codeplex获得源代码控制,并尝试修改它来完成整个类(还没有看过代码,所以不确定你必须有多大的勇气这么做)。我已经安装了它,但是我不知道如何使它的接口(无论它是什么)出现在我的测试类上。我不清楚,但不清楚如何读取它-例如,显然它没有在ICompiledElement方法上启用,但这意味着什么?嗯,我不能足够快地理解它,所以这次我使用了Perl脚本。但我将来会研究Resharper插件。