Resharper和Namespace别名限定符

时间:2012-01-22 18:50:58

标签: c# resharper resharper-6.0

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

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

using DomainModel = MyProduct.Core.Domain.Model;
using Dtos = MyProduct.ServiceModel.Dtos;

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

using DomainModel = MyProduct.Core.Domain.Model;
using Customer = MyProduct.Core.Domain.Model.Customer;

是否有人这样或类似的东西并让R#不再打击它?

1 个答案:

答案 0 :(得分:3)

这是ReSharper在你提出时会做的事情:缩短引用,代码清理。

即使这种行为可能对您不利,但从技术上讲,它是正确的。因为在你的代码中它会缩短一些东西。这就是算法应该做的事情。

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

  1. Resharper找到一个可以缩短的引用(你没有给我足够的代码来准确地告诉你哪里,但这没关系)。
  2. 缩短之后,需要确保可以解析对象,因此会为其添加新的用法(在您的情况下为using Customer = MyProduct.Core.Domain.Model.Customer;)。
  3. Resharper检测到using Dtos = MyProduct.ServiceModel.Dtos;已不再使用(毕竟,另一个使用涵盖缩短的参考)。并删除它。
  4. 这是我怀疑是造成这种情况的原因。如果没有看到代码中的实际用法,我无法100%肯定。但这很可能是重构的原因。