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)
{ }
}
展开
 我来答
sh981013
2013-05-30 · 超过33用户采纳过TA的回答
知道答主
回答量:114
采纳率:0%
帮助的人:88.3万
展开全部

//获取需要创建的类型信息

Type t = assembly.GetType("System.Windows.Forms.DragEventHandler", true, true);

//使用带有一个参数的构造方法创建一个对象实例

object obj = Activator.CreateInstance(t, new object[]{evo});


失败的原因有几个

  1. 确定你的 Type t 成功的获取到了,它不是null

  2. 确定你的 Type t 具有一个参数为Test 类型的公开构造方法

  3. 确定那个构造方法中的处理过程没有出现异常,有异常也会创建失败

有这两点满足就可以成功创建了


另外“不建议使用反射和泛型”一说,我完全不赞同

反射和泛型虽说在性能上有一定的问题,但这是两个非常优秀的技术,如何更好的发挥它的长处是我们需要思考的,而不是逃避不去用它

更多追问追答
追问
我的使用是委托+反射
我的 Type t 不是有一个参数为Test类型的方法
具有一个参数为Test 类型的公开构造方法
而是有一个和public delegate void eventOperation(object sender, EventArgs e);
这样eventOperation的一个委托
这写代码在手动创建对象并调用时候完全没有问题,可是就是反射创建不出来不知为何
追答
代码发我,我看看
一八六八四四三七四
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lnlllnnhf
2013-05-30 · TA获得超过249个赞
知道小有建树答主
回答量:203
采纳率:0%
帮助的人:194万
展开全部
Activator.CreateInstance()
实例化一个类,可委托不是类啊。
如果你换一个Forms.Button 就可以实例化了。
追问
你没明白我说的意思,我是想实现一个类,可是这个类型的构造方法的参数是委托类型,不是普通的类型
在系统中直接使用
System.Windows.Forms.DragEventHandler de = new System.Windows.Forms.DragEventHandler(new Test().method);
就什么问题都没有
追答
首先,我非常明白你想干嘛,而且我也写了代码的
你也知道报的错吗 说没有这个构造函数对吧
语法上=new 出来一个委托
但这表示DragEventHandle是一个类?
总之 委托不是类
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
surwe
2013-05-30 · TA获得超过631个赞
知道小有建树答主
回答量:1339
采纳率:44%
帮助的人:248万
展开全部
不建议使用反射 泛型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式