给定静态类:
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
使用反射调用 Gold?这是我到目前为止所拥有的:
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
下面的 Gold。我想我现在的问题是,当我不知道Func
. 例如,我可能想像这样创建另一个转换器:Func<string, string>
. 我唯一可以确定的是,只有一个参数(不同类型),并且返回总是字符串。
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));