Xaml:如何调用名称存储在字符串中的方法?

时间:2013-12-17 16:53:36

标签: c# xaml

string combo_value = cmbox.SelectionBoxItem.ToString();
object value = typeof(JsonObject).GetMethod("combo_value")
                                 .Invoke(jsonObject.rates,new Type[0]);
 Label_value.Text = value;

1 个答案:

答案 0 :(得分:1)

您需要将调用的结果转换为字符串 - 要么转换(如果它实际上是字符串),要么使用ToString()

string methodName = cmbox.SelectionBoxItem.ToString();
object methodOwner = jsonObject.rates;
object[] methodParameters = new Type[0];   // this is the same as having no parameters

// invoke methodName on the instance jsonObject.rates, with no parameters
System.Diagnostics.Debug.WriteLine("Invoking the method named '{0}' on the object '{1}' with parameters '{2}'",
    methodName, methodOwner, string.Join(", ", methodParameters);

object value = typeof(JsonObject).GetMethod(methodName).Invoke(methodOwner, methodParameters);
if (value != null)
    Label_value.Text = value.ToString();

请注意Invoke的两个参数是1)调用方法的对象,以及2)方法的参数。我看到你传递一个空数组作为参数数组 - 这是一种奇怪的方法,不将参数传递给方法(也可以传递null)。所以我怀疑那不是你想要做的。您必须确保传递给object[]的{​​{1}}与您要调用的方法的签名匹配。