[英]Question on calling a method using reflection
今天美丽的晴天! 但是,我不能享受它,因为我已经尝试在Mono中调用动态方法2天了:-(
故事:
我正在尝试在名为“模板”的类中调用它。 基本上,如果我可以将字符串传递给Template并运行该方法(在Template类中定义),则我会很喜欢。 到目前为止,模板类看起来像这样。
namespace Mash
{
public class Template
{
public Template(string methodToCall)
{
Type type = this.GetType();
object ob = Activator.CreateInstance(type);
object[] arguments = new object[52];
type.InvokeMember(methodToCall,
BindingFlags.InvokeMethod,
null,
ob,
arguments);
}
public void methodIWantToCall()
{
Console.WriteLine("I'm running the Method!");
}
}
}
在编译期间没有收到错误。 但是,一旦运行它,我就会
'未处理的异常:System.MissingMethodException:未找到方法:'未找到默认构造函数... Mash.Template的ctor()'。
我认为这里失败了:
object ob = Activator.CreateInstance(type);
如果您需要更多信息,请告诉我。
提前致谢!!
你不需要模板的另一个实例,如果你要调用的方法是在同一class.You可以使用此
public class Template
{
public Template(string methodToCall)
{
this.GetType().InvokeMember(methodToCall,
BindingFlags.InvokeMethod,
null,
this,
null);
}
public void methodIWantToCall()
{
Console.WriteLine("I'm running the Method!");
}
}
我用以下方法进行了测试:
class Program
{
public static void Main(string[] args)
{
Template m = new Template("methodIWantToCall");
Console.ReadKey(true);
}
}
Activator.CreateInstance
的第一个参数是类的类型,然后跟随该类型的构造函数的参数。
您正在尝试不使用构造函数的参数来创建Template
类的实例。 但是没有没有参数的构造函数。
尝试将构造函数添加到您的Template
类中,该构造函数不使用任何参数:
public class Template
{
//......
public Template()
{
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.