【问题标题】:Resharper and Namespace alias qualifierResharper 和命名空间别名限定符
【发布时间】:2012-02-16 07:57:28
【问题描述】:

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

通常我让 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# 对其进行攻击?

【问题讨论】:

    标签: c# resharper resharper-6.0


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 我明白了,我也明白为什么它摆脱了 using Dtos 别名。其他东西需要对 MyProejct.ServiceModel 的引用。我想创建一个不使用指令优化的代码清理配置文件会起作用。
    猜你喜欢
    • 2012-05-07
    • 1970-01-01
    • 2012-08-22
    • 2013-07-18
    • 1970-01-01
    • 2020-08-21
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多