多くの場合、式、パラメーター、ステートメントなどの名前が必要です。次に例を示します。
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));
}
}