解決方案的癥結要求您使用Reflection來定位所需的方法。這是一個簡單的例子,涵蓋你的sitaution;
private string DoFormat(string data, string format)
{
MethodInfo mi = typeof (string).GetMethod(format, new Type[0]);
if (null == mi)
throw new Exception(String.Format("Could not find method with name '{0}'", format));
return mi.Invoke(data, null).ToString();
}
您可以使該方法更通用,接受要調用的方法的參數,如下所示。請注意對方法的更改.GetMethod和.Invoke被調用以傳遞所需的參數。
private static string DoFormat(string data, string format, object[] parameters)
{
Type[] parameterTypes = (from p in parameters select p.GetType()).ToArray();
MethodInfo mi = typeof(string).GetMethod(format, parameterTypes);
if (null == mi)
throw new Exception(String.Format("Could not find method with name '{0}'", format));
return mi.Invoke(data, parameters).ToString();
}
你可以與反思這樣做很容易...但它不完全是碼最快位寫過。 – asawyer 2012-07-24 02:52:33
看到這個答案: http://stackoverflow.com/questions/4629/how-can-i-read-the-properties-of-a-c-sharp-class-dynamically – David 2012-07-24 02:57:38
真正的問題是;這是解決你的問題的最好方法嗎? – 2012-07-24 03:01:55