public static void ShouldNotBeNull<T>(this T actualValue)
{
Assert.IsFalse(actualValue == null, "Object is null, and should not be null.") ;
}
我想在我的测试中的错误字符串中提供变量名。我有这个作为扩展方法。是否可以获取传入的变量的实际参数名称?
答案 0 :(得分:1)
我written up before的一个选项是使用匿名类型。例如,你有:
public void Foo(string x, string y, string z) // x and z must not be null
{
new { x, z }.AssertNoNullElements();
}
使用通用AssertNotNull
方法执行一次反射等,并将属性访问缓存为委托,以尽可能少地达到性能。
这不是我一般建议的东西。它不是重构证明,它在每次调用时都会创建一个新对象,而且通常会滥用匿名类型。无可否认,如果这只是 进行测试,那么性能方面并不差......
答案 1 :(得分:0)
考虑
public static void ShouldNotBeNull<T>(this T actualValue, string variableName)
{
Assert.IsFalse(actualValue == null, variableName + " is null, and should not be null.") ;
}
答案 2 :(得分:-1)
不,调用者可能甚至没有为'this'参数或任何其他参数指定变量名