使用ReSharper将Foo和Foo <t>移动到匹配的文件</t>

时间:2013-09-06 14:42:11

标签: c# resharper-8.0

代码

我想使用ReSharper 将类型移动到匹配文件功能来移动下面的代码,该代码用单个.cs'编写。文件:

public abstract class Foo
{

}

public abstract class Foo<T> : Foo
{

}

执行ReSharper重构会导致此异常:

  

无法移动类Foo,因为还有另一个声明   将被移动到文件'Foo.cs'。

问题

我可以想到两个结果,或者我都可以:

  1. FooToo<T>移至Foo.cs
  2. Foo移至Foo.cs并将Foo<T>移至FooOfT.cs
  3. 所以,问题仍然存在:

    1. 是否有另一种最佳命名做法与resharper?或
    2. 不冲突
    3. 有没有办法配置ReSharper来支持这种命名?
    4. 注意

      • 由于泛型对于每种可能的约束组合都是唯一的,因此Foo类是我的接口类。因此,我不会将Foo<T>重命名为Bar<T>
      • 我不希望将Foo重命名为FooBase,因为它已经是一个抽象类,它使显式的“Base”后缀变得多余。
      • 我无法将Foo重构为IFoo,因为Foo是我的概念界面(因为必需的基本实现。

2 个答案:

答案 0 :(得分:1)

据我所知,没有办法告诉Resharper附加文件名的泛型参数。它只会使用类名,即FooFoo<T>Foo<A, B, C>都有Foo.cs作为文件名,但是 - 这就是问题 - ReSharper似乎没有知道这种可能性存在并且会在这种情况下向您显示错误。除了logging a bug or feature request之外,你真的无能为力。

答案 1 :(得分:1)

您可以考虑以下选项:

  • 使用AbstractFoo
  • 如果可能,将Foo更改为界面,并使用IFoo
  • 使用GenericFoo
  • FooFoo<T>使用不同的命名空间,并将它们放在不同的文件夹中。