使用格式获取属性ToString

时间:2015-08-11 08:44:33

标签: c# reflection invoke

使用反射我可以在属性上执行ToString。但有没有办法在执行此操作时提供格式?

public static object GetCustomValue(object src, string propName)
{
    return src.GetType().GetMethod(propName).GetValue(src, null);
}

调用这样的函数可以正常工作

GetCustomValue(obj, "ToString")

但我想用

来称呼它
GetCustomValue(obj, "ToString(\"MMM\")")

在我的函数中调用GetMethod时,是否可以为ToString添加格式?

2 个答案:

答案 0 :(得分:3)

如果您的ToString接受参数(默认值不接受),则添加一个额外的可选参数:

public static Object GetCustomValue (object Target, string MethodName, String Format = null)
{
    // Gets the ToString method that accepts a string as the parameter and invoke it.
    return Target.GetType ()
        .GetMethod (MethodName, new [] {typeof (String)})
        .Invoke (Target, new Object[] {Format});
}

这样你就可以调用它:

GetCustomValue (obj, "ToString", "MMM");

答案 1 :(得分:1)

是的,您可以使用方法名称.ToString(format);

GetPropertyValue(obj, "ToString").ToString(format);