【问题标题】:Resharper source template adding empty statementResharper 源模板添加空语句
【发布时间】:2016-07-25 14:31:43
【问题描述】:

为了简化测试,我将Resharper source template 放在一起以快速创建一个替换为NSubstitute 的类。

[SourceTemplate]
public static void substitute<T>(this T o,
    [Macro(Expression = "guessExpectedType()", Editable = -1)] string type)
    where T : class
{
    //$ o = Substitute.For<$type$>();
}

假设已经定义了一个字段 private ILogger logger;,这让我可以输入 logger.sub(Resharper 建议从那里获得完整的方法名称)来生成 logger = Substitute.For&lt;ILogger&gt;();

我还有两个问题我无法弄清楚。

1) 有时它会在被替换的代码之前放置一个空语句,即

;
logger = Substitute.For<ILogger>();

每当替换行下方有语句时,这似乎就会发生。 Resharper 然后会建议可以删除空语句。为什么要添加它,我该如何防止它?

2) 如果 NSubstitute 已经为该类导入 (using NSubstitute;),它只会正确猜测替代类型。没有它,我会收到logger = Substitute.For&lt;object&gt;(); 和导入 NSubstitute 的建议。是否有更好的宏表达式来解析字段类型?或者,如果尚未导入命名空间,有没有办法让它导入命名空间?

【问题讨论】:

    标签: c# resharper nsubstitute


    【解决方案1】:
    1. 这听起来像一个错误 - 请你file an issue
    2. 尝试在注释代码中包含命名空间。 ReSharper 将缩短引用并自动将命名空间添加到文件顶部的 using 语句列表中:

      //$ o = NSubstitute.Substitute.For&lt;$type$&gt;();

    【讨论】:

    • 完美解决问题2!谢谢!
    猜你喜欢
    • 2013-08-02
    • 2012-04-23
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2014-11-21
    • 1970-01-01
    相关资源
    最近更新 更多