Во многих случаях требуется имя выражения, параметра, оператора и т. Д. Например:
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));
}
}