5

我已经为此进行了一些搜索并尝试了一些东西,但如果不关闭一些我想要的东西就无法让它工作。

通常我让 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# 破坏它?

4

1 回答 1

3

这是 ReSharper 在您允许时会做的事情:缩短引用,代码清理。

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

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

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

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

于 2012-01-22T21:55:47.737 回答