从c#中的字符串调用类对象的函数

如果某些方法有字符串参数,我正在使用 WPF mvvm 模式,这可能是这样的调用


SomeClass1 sc  = new SomeClass();

DummyClass2 dc = new DummyClass2();


public void SomeMethod(string param) //param = "SomeMethodName"

    sc.'param'(dc);

}

关键是通过没有分支或数据结构映射的参数调用类对象的功能。


也许使用反射..有什么好主意吗?


qq_遁去的一_1
浏览 275回答 1
1回答

绝地无双

是的,这可以通过反射来实现。您可以使用该Invoke方法。它看起来像这样:MethodInfo method = type.GetMethod(name);object result = method.Invoke(objectToCallTheMethodOn);话虽如此,在正常情况下,您不应该使用反射来调用 c# 中的方法。它仅适用于非常特殊的情况。这是一个完整的例子:class A {    public int MyMethod(string name) {        Console.WriteLine( $"Hi {name}!" );        return 7;    }}public static void Main(){    var a = new A();    var ret = CallByName(a, "MyMethod", new object[] { "Taekyung Lee" } );    Console.WriteLine(ret);}private static object CallByName(A a, string name, object[] paramsToPass ){    //Search public methods    MethodInfo method = a.GetType().GetMethod(name);    if( method == null )    {        throw new Exception($"Method {name} not found on type {a.GetType()}, is the method public?");    }    object result = method.Invoke(a, paramsToPass);    return result;}这打印:Hi Taekyung Lee!7
打开App,查看更多内容
随时随地看视频慕课网APP