代码
我想使用ReSharper 将类型移动到匹配文件功能来移动下面的代码,该代码用单个.cs
'编写。文件:
public abstract class Foo
{
}
public abstract class Foo<T> : Foo
{
}
执行ReSharper重构会导致此异常:
无法移动类Foo,因为还有另一个声明 将被移动到文件'Foo.cs'。
问题
我可以想到两个结果,或者我都可以:
Foo
和Too<T>
移至Foo.cs
Foo
移至Foo.cs
并将Foo<T>
移至FooOfT.cs
所以,问题仍然存在:
注意
Foo
类是我的接口类。因此,我不会将Foo<T>
重命名为Bar<T>
。Foo
重命名为FooBase
,因为它已经是一个抽象类,它使显式的“Base”后缀变得多余。Foo
重构为IFoo
,因为Foo
是我的概念界面(因为必需的基本实现。答案 0 :(得分:1)
据我所知,没有办法告诉Resharper附加文件名的泛型参数。它只会使用类名,即Foo
,Foo<T>
和Foo<A, B, C>
都有Foo.cs
作为文件名,但是 - 这就是问题 - ReSharper似乎没有知道这种可能性存在并且会在这种情况下向您显示错误。除了logging a bug or feature request之外,你真的无能为力。
答案 1 :(得分:1)
您可以考虑以下选项:
AbstractFoo
IFoo
GenericFoo
Foo
和Foo<T>
使用不同的命名空间,并将它们放在不同的文件夹中。