4

代码

我想使用 ReSharper将类型移动到匹配文件中的功能来移动下面用单个.cs'. 文件:

public abstract class Foo
{

}

public abstract class Foo<T> : Foo
{

}

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

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

问题

我可以想到两种结果,我都可以:

  1. 移动FooToo<T>进入Foo.cs
  2. 搬进和搬进Foo_Foo.csFoo<T>FooOfT.cs

所以,问题仍然存在:

  1. 是否有另一种与 resharper 不冲突的最佳命名实践?或
  2. 有没有办法配置 ReSharper 以支持这种命名?

笔记

  • 因为泛型对于每种可能的约束组合都是唯一的,所以Foo该类是我的接口类。因此我不会重命名Foo<T>Bar<T>.
  • 我不想重命名Foo为,FooBase因为它已经是一个抽象类,这使得显式的“Base”后缀变得多余。
  • 我无法重构Foo为我IFooFoo概念接口(因为需要基本实现。
4

2 回答 2

1

您可以考虑以下选项:

  • 利用AbstractFoo
  • 如果可能,将 Foo 更改为接口,并使用IFoo
  • 利用GenericFoo
  • Foo为and使用不同的命名空间,Foo<T>并将它们放在不同的文件夹中。
于 2013-09-06T14:46:35.633 回答
1

据我所知,没有办法告诉 Resharper 附加文​​件名的通用参数。它只会使用类名,即FooFoo<T>并且Foo<A, B, C>所有Foo.cs文件名都具有,但是 - 这就是问题 - ReSharper 似乎不知道这种可能性存在,并且会在这种情况下向您显示错误。除了记录错误或功能请求之外,您真的无能为力。

于 2013-09-06T14:45:07.213 回答