System.Windows.Forms.dll在全局系统缓存中已经有,既然已经引用,无需这样执行。如果没有引用第三句无法执行
解决方案 »
- Datagridview中的数据显示??
- 有熟悉C#和Delphi的么?能不能帮我解决一下,这段代码如何翻译成C#?
- 音频播放用什么类
- 请问,在一个页面中,Iframe着一个页面,Iframe的页面如何可以把值传回到父级页面.
- 将access数据库中的数据导入到另一个access数据库中如何用SQL语句实现?
- 哪能下到DirectShowLib.dll的源代码?
- “bool”不包含“BlockCopy”的定义,并且找不到可接受类型为“bool”的第一个参数的扩展方法“BlockCopy”(是否缺少 using
- 用DataGrid 读取Xml 时出个小问题!
- .NET的功能如何在其他语言中运用?
- 如何用C#与添加数据库的DateTime字段
- .net中的菜单控件中如何在菜单项前面加上图片?
- 求VSS8.0,80分.
也可能是"System.Windows.Forms.ComboBox",生成后的object可以转换为System.Windows.Forms.Control
Assembly a = Assembly.LoadFile(s);
Type t = a.GetType("System.Windows.Forms.Button");
object o = System.Activator.CreateInstance(t);
if ( o.GetType() == sender.GetType())
{
MessageBox.Show("类型匹配!");
}
else
{
MessageBox.Show("类型不匹配!");
}楼主运行一下这个程序
结果是【类型不匹配!】
object examObject = ass.CreateInstance("System.Windows.Forms.TextBox");
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
System.Windows.Forms.Control ct = (System.Windows.Forms.Control)examObject;只是简单的装箱与拆箱,应该没有类型问题呀
to 楼上的System.Windows.Forms.Control是当前的已经加载了的dll里面的而
object examObject = ass.CreateInstance("System.Windows.Forms.TextBox");
是从另外一个Assembly里面获取的这么转换,肯定8行
object o = a.CreateInstance("TestColumnDragDataGrid.ClassB");
ClassB cb = (ClassB)o;是正确的啊,为什么换成TextBox就不行了呢
{
MessageBox.Show("类型匹配!");
}
else
{
MessageBox.Show("类型不匹配!");
}结果是【类型匹配!】
好像也没有这样用文本框的吧
一般来说
反射得到的对象,是不会做转换的
转换,就表示知道是什么对象
既然知道了,为什么不直接new
还用反射干什么
一般都是如jimh(jimmy) 所言
Invoke方法之类的
object examObject = ass.CreateInstance("System.Windows.Forms.TextBox");
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
System.Windows.Forms.Control ct = (System.Windows.Forms.Control)examObject;