Resharper源模板添加空语句

时间:2016-07-25 14:31:44

标签: c# resharper nsubstitute

为了便于测试,我将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<ILogger>();

我还有两个问题我无法弄明白。

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

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

只要在替换行下面有语句,就会发生这种情况。然后Resharper会建议删除空语句。为什么要开始添加,我该如何防止呢?

2)如果已经为类(using NSubstitute;)导入了NSubstitute,它只会正确猜测替换类型。没有它,我得到logger = Substitute.For<object>();并建议导入NSubstitute。是否有更好的宏表达式来解析字段类型?或者,有没有办法让它导入名称空间,如果它还没有被导入?

1 个答案:

答案 0 :(得分:1)

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

    //$ o = NSubstitute.Substitute.For<$type$>();