我可以根据一个文本来NEW一个实例吗?

jakingcheng 2009-04-26 08:42:28
我想写一个类,可以传一个文本的类型来NEW一个实例.
比如传一个文本"system.windows.from.button" 我想返回一个BUTTON的实例
...全文
70 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgke 2009-04-28
  • 打赏
  • 举报
回复
zgke 2009-04-28
  • 打赏
  • 举报
回复
这里的方法就是你想要的


http://blog.csdn.net/zgke/archive/2009/03/11/3980137.aspx
marvelstack 2009-04-28
  • 打赏
  • 举报
回复
参考
使用反射生成一个窗体的例子:
Assembly assm = Assembly.LoadFrom("e:\\WindowsApplication.dll");
Type TypeToLoad= assm.GetType("WindowsApplication.Form1");

object obj;
obj = Activator.CreateInstance(TypeToLoad);
Form formToShow = null;
formToShow = (Form)obj;
formToShow.Show();

另外参考,
http://www.c-sharpcenter.com/CSNET/dynamicinvoke.asp
http://www.c-sharpcorner.com/Code/2002/April/LoadingAssemblyInfo.asp

Dynamically load a class and execute a method in .NET
http://www.codeproject.com/csharp/DynLoadClassInvokeMethod.asp
蓝海D鱼 2009-04-26
  • 打赏
  • 举报
回复
反射动态创建对象:
如果A,B,C,D都与执行代码同一个程序集.则可以这样调用
System.Reflection.Assembly.GetExecutingAssembly().CreateInstance("命名空间.类名", false);
如:
object o = System.Reflection.Assembly.GetExecutingAssembly().CreateInstance("MyNameSpace.A", false);

不同程序集的话.则要装载调用.如下:
System.Reflection.Assembly.Load("程序集名称").CreateInstance("命名空间.类名", false);
如:
object o = System.Reflection.Assembly.Load("MyDll").CreateInstance("MyNameSpace.A", false);


动态创建后再将o强制转换为IChar接口,如下:
IChar ichar = o as IChar;
wanghui0380 2009-04-26
  • 打赏
  • 举报
回复
工厂类或者反射

111,126

社区成员

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

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

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