Resharper和Namespace别名限定符

Der*_*tie 5 c# resharper resharper-6.0

我已经搜索了一下这个并尝试了一些东西,如果不把我想要的东西丢掉,就无法让它工作.

通常我让Resharper使用名称空间优化.在将DTO映射到域模型对象的服务实现中,为每个对象创建别名是一个很好的可视化.这样,当它很晚,你的睡眠被剥夺了看到Dtos.CustomerDomainModel.Customer帮助.

using DomainModel = MyProduct.Core.Domain.Model;
using Dtos = MyProduct.ServiceModel.Dtos;
Run Code Online (Sandbox Code Playgroud)

当我运行代码清理时,它将更改为:

using DomainModel = MyProduct.Core.Domain.Model;
using Customer = MyProduct.Core.Domain.Model.Customer;
Run Code Online (Sandbox Code Playgroud)

有没有人这样做或类似的东西,并保持R#打击它?

Aid*_*api 3

当您允许时,ReSharper 会执行以下操作:缩短引用、清理代码。

尽管这种行为可能不适合您,但从技术上来说它是正确的。因为在你的代码中它会缩短一些东西。这就是算法应该做的事情。

这就是导致此结果的算法的工作原理:

  1. Resharper 找到了一个可以缩短的参考(你没有给我足够的代码来准确地告诉你在哪里,但这并不重要)。
  2. 缩短后,需要确保可以解析该对象,因此它添加了一个新的用途(using Customer = MyProduct.Core.Domain.Model.Customer;在您的情况下)。
  3. Resharper 检测到using Dtos = MyProduct.ServiceModel.Dtos;不再使用(毕竟,其他使用涵盖了您缩短的参考)。并将其删除。

我怀疑这就是造成这种情况的原因。如果没有看到代码中的实际用法,我无法 100% 确定。但这很可能是重构的原因。