Activator.CreateInstance实例化类时,如果构造器中有Ref参数,怎样设置?

elvis_gao 2010-04-27 05:30:23
Activator.CreateInstance实例化类时,如果构造器中有Ref参数,怎样设置?

网上没找到,哪位知道,请赐教
...全文
308 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiehuanxie 2010-04-27
  • 打赏
  • 举报
回复
Class2是什么东西, 如果传进来的是值类型怎么处理?
GT7466 2010-04-27
  • 打赏
  • 举报
回复
args是object()
问题在于object(0)和object(1)是否可以一个byref,一个byval
elvis_gao 2010-04-27
  • 打赏
  • 举报
回复
已经解决,给后其他遇到此问题的人一个提醒,不需要任何设置!
'类定义
Class Class1
'构造器
Public Sub New(Byref handle as Class2)
Dim handle As handle = new Class2()
End Sub
End Class
//动态实例化
//装箱,创建构造器参数
Dim args As Object() = {handle}
//实例化
Dim obj As Object = Activator.CreateInstance(typeof(Class1), args)

上面语句执行完后,你会发现,handle!=args[0],安装我们的思路,这里应该是引用地址,但是这里不是。
问题应该在ref,我这样认为:
没有调用CreateInstance之前,args[0],handle指向相同地址,但是在调用了有ref的函数后,args[0]指向了返回的ref参数的地址,而handle依然指向原来的地址。个人想法,没有推敲
GT7466 2010-04-27
  • 打赏
  • 举报
回复
System.Reflection.Assembly  CreateInstance方法有重载传参的,你直接ref传试下 

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧