C#如何使用反射如题,想要创建一个对象,怎么也创建不出来了
eventOperationevo=newTest().method;Assemblyassembly=Assembly.LoadFrom((@systemDllPath...
eventOperation evo = new Test().method;
Assembly assembly = Assembly.LoadFrom((@systemDllPath));
Type t = assembly.GetType("System.Windows.Forms.DragEventHandler", true, true);
object obj = Activator.CreateInstance(t, new object[]{evo});
return obj;
}
public delegate void eventOperation(object sender, EventArgs e);
其中systemDllPath是正确的System.Windows.Forms.dll路径
class Test
{
public Test(){}
public void method(object sender, EventArgs e)
{ }
} 展开
Assembly assembly = Assembly.LoadFrom((@systemDllPath));
Type t = assembly.GetType("System.Windows.Forms.DragEventHandler", true, true);
object obj = Activator.CreateInstance(t, new object[]{evo});
return obj;
}
public delegate void eventOperation(object sender, EventArgs e);
其中systemDllPath是正确的System.Windows.Forms.dll路径
class Test
{
public Test(){}
public void method(object sender, EventArgs e)
{ }
} 展开
3个回答
展开全部
//获取需要创建的类型信息
Type t = assembly.GetType("System.Windows.Forms.DragEventHandler", true, true);
//使用带有一个参数的构造方法创建一个对象实例
object obj = Activator.CreateInstance(t, new object[]{evo});
失败的原因有几个
确定你的 Type t 成功的获取到了,它不是null
确定你的 Type t 具有一个参数为Test 类型的公开构造方法
确定那个构造方法中的处理过程没有出现异常,有异常也会创建失败
有这两点满足就可以成功创建了
另外“不建议使用反射和泛型”一说,我完全不赞同
反射和泛型虽说在性能上有一定的问题,但这是两个非常优秀的技术,如何更好的发挥它的长处是我们需要思考的,而不是逃避不去用它
更多追问追答
追问
我的使用是委托+反射
我的 Type t 不是有一个参数为Test类型的方法
具有一个参数为Test 类型的公开构造方法
而是有一个和public delegate void eventOperation(object sender, EventArgs e);
这样eventOperation的一个委托
这写代码在手动创建对象并调用时候完全没有问题,可是就是反射创建不出来不知为何
追答
代码发我,我看看
一八六八四四三七四
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Activator.CreateInstance()
实例化一个类,可委托不是类啊。
如果你换一个Forms.Button 就可以实例化了。
实例化一个类,可委托不是类啊。
如果你换一个Forms.Button 就可以实例化了。
追问
你没明白我说的意思,我是想实现一个类,可是这个类型的构造方法的参数是委托类型,不是普通的类型
在系统中直接使用
System.Windows.Forms.DragEventHandler de = new System.Windows.Forms.DragEventHandler(new Test().method);
就什么问题都没有
追答
首先,我非常明白你想干嘛,而且我也写了代码的
你也知道报的错吗 说没有这个构造函数对吧
语法上=new 出来一个委托
但这表示DragEventHandle是一个类?
总之 委托不是类
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不建议使用反射 泛型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询