c# 反射带参数的构造函数和反射传参数问题

zw_l_1989 2011-05-31 04:23:16

Assembly ass = Assembly.LoadFrom("UCClassL");
UserControls1 u = (UserControls1 )ass.CreateInstance("UCClassL.MyControls.UserControls1 ", true, BindingFlags.CreateInstance,null, new object[] { "fuck", "b" },null, null);
Panel1.Controls.Add(u);


UserControls1.cs:

public partial class UserControls1 : UserControl
{
public UserControls1 ()
{
InitializeComponent();
}

public UserControls1 (object a, object b)
{
MessageBox.Show((string)a);
}
public void SayHello(string a)
{
MessageBox.Show(a+":Hello!")
}
}


问题1:参数传进来了 可以显示messagebox 但是UserControl1 上的控件(一个button)没有显示出来
问题2:如果调用SayHello(string a)方法
问题3:如果UserControls1 继承的是我自己写的UCBase 用父类多态实现 是否有区别
ps:除了Assembly,还可以使用其他反射方法
...全文
1317 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zw_l_1989 2011-05-31
  • 打赏
  • 举报
回复
囧...
matrixcl 2011-05-31
  • 打赏
  • 举报
回复
1. 你的构造函数重载了。调用的是有参数的这个构造函数,它没调这行“InitializeComponent()”初始化UI
我姓区不姓区 2011-05-31
  • 打赏
  • 举报
回复
问题1:构造函数里没有 InitializeComponent(),当然不会加载控件
public UserControls1 (object a, object b)
{
InitializeComponent();
MessageBox.Show((string)a);
}
问题2:什么叫“如果”?是“如何”吧?
既然你已经强制类型转换为UserControl1了,直接u.SayHello就行了……
问题3:你所说的“区别”是指什么?

111,125

社区成员

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

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

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