【发布时间】:2011-08-23 09:07:27
【问题描述】:
在很多情况下,我们需要一个表达式、参数、语句等的名称。例如:
public abstract void Log(string methodName, string parameterName, string message);
public void FooMethod(string value)
{
if (value == null)
{
this.Log("FooMethod", "value", "The value must be whatever...");
throw new ArgumentNullException("value");
}
if (value.Length < 5)
{
this.Log("FooMethod", "value.Length", "The value length must be whatever...");
throw new ArgumentException("value");
}
}
有什么方法可以自动获取这些字符串文字,例如使用可以使用typeof(string) 之类的关键字?
或者有没有一种基于反射的简单高效的方法?
我不是在寻找检查和记录此参数的方法(这实际上只是一个示例)。我正在寻找一种方法来获取部分代码为string。
以下会更准确,可以由编译器检查,并且在重构代码时也会考虑:
public void FooMethod(string value)
{
if (value == null)
{
this.Log(literal(this.FooMethod), literal(value), "The parameter '" + literal(value) + "' must be whatever...");
throw new ArgumentNullException(literal(value));
}
if (value.Length < 5)
{
this.Log(literal(this.FooMethod), literal(value.Length), "The value length must be whatever...");
throw new ArgumentException(literal(value));
}
}
【问题讨论】:
-
您的第二个样本是假的。在
throw之后不会执行任何代码。 -
感谢您的建议。我更改了示例。
标签: .net keyword string-literals