【发布时间】:2015-05-17 16:02:10
【问题描述】:
我试图在不知道其名称的情况下从动态调用方法。我很难用英语解释这个,所以有代码:
public void CallMethod(dynamic d, string n)
{
// Here I want to call the method named n in the dynamic d
}
我想要类似:d.n() 但 n 替换为字符串。
我想要这个:
Type thisType = this.GetType();
MethodInfo theMethod = thisType.GetMethod(TheCommandString);
theMethod.Invoke(this, userParameters);
但具有动态。
如果您需要上下文来帮助您:我正在制作一个支持“mods”的应用程序,您将 DLL 放在 mod 文件夹中,然后加载并执行它。它适用于 dynamic(我有一个这样的字典:Dictionnary<string, dynamic> instances;)。我希望应用程序从库中获取方法名称(使用instances["topkek"].GetMethods();,我已经创建了此方法),然后使用它返回的字符串调用该方法。我不知道我说的是不是什么意思(我是法国人:/)...
我正在使用 .Net 框架 4.5 的 VS 2013 Express,如果您需要更多信息来帮助我问我。
【问题讨论】:
-
如何知道调用哪个方法?您可以在“正常”
Type上使用Type.GetMethods- 不确定它如何与dynamic一起使用。 -
您的问题过于宽泛,提供的细节很少。请尝试付出一些努力并解释自己。
-
该方法由用户指定,我想要类似:“d.n()”,ofc 如果该方法不存在它会崩溃。所以这对于动态来说是不可能的?
-
为什么不通过委托呢?
标签: c# dynamic methods reflection