为了便于测试,我将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。是否有更好的宏表达式来解析字段类型?或者,有没有办法让它导入名称空间,如果它还没有被导入?
答案 0 :(得分:1)
尝试在注释代码中包含命名空间。 ReSharper将缩短引用并自动将命名空间添加到文件顶部的using
语句列表中:
//$ o = NSubstitute.Substitute.For<$type$>();