与えられた静的クラス:
public static class Converters
{
public static Func<Int64, string> Gold = c => String.Format("{0}g {1}s {2}c", c/10000, c/100%100, c%100);
}
Func
データベースから名前を文字列 ( ) として受け取っていますregEx.Converter
。Func
リフレクションを使用してゴールドを呼び出すにはどうすればよいですか? これが私がこれまでに持っているものです:
var converter = typeof(Converters).GetMember(regEx.Converter);
if (converter.Count() != 1)
{
//throw new ConverterNotFoundException;
}
matchedValue = converter.Invoke(null, new object[]{matchedValue}) as string;
編集:
Converters
異なるパラメーターを使用する可能性のある他の Funcs をクラスに追加することを計画していることを言及する必要がありました。
Edit2:
これまでの返信から、Func
以下のゴールドで機能しています。私の質問は、Func
. たとえば、次のように別のコンバーターを作成したい場合がありますFunc<string, string>
。私が確信できる唯一のことは、(異なる型の) パラメーターは 1 つだけであり、戻り値は常に文字列になるということです。
var converter = typeof(Converters).GetField("w", BindingFlags.Static | BindingFlags.Public);
if (converter == null)
{
//throw new ConverterNotFoundException;
}
var f = converter.GetValue(null) as Func<Int64, string>;
matchedValue = f.Invoke(Convert.ToInt64(matchedValue));