0
有没有一种简洁的方式来从一个字符串创建一个UserControl?如何从一个字符串创建一个UserControl
我想避免硬编码是这样的:
if (tool.ToolName == "Image_Tool") { ctl = new Image_Tool() as UserControl; }
Image_Tool是现有用户控件。从解析文件夹中获取ToolName以获取UserControl的文件名。
会喜欢做这样的事情:
UserControl ctl = new tool.toolName() as UserControl
是,“天上掉馅饼”的思想? PHP有一种将字符串转换为变量的方法......想知道C#是否有办法做到这一点?
谢谢。
汉斯,想你的建议,但现在越来越TypeLoadException此代码:
ObjectHandle handle = Activator.CreateInstance("AutomationSystem", tool.ToolName);
Object o = handle.Unwrap();
ctl = o as UserControl;
这是一个Windows应用程序不是Web应用程序,所以不存在的DLL,只是exe文件。
使用Activator.CreateInstance()。不要忘记命名空间的名称。 –
汉斯,我一直在网上尝试不同的建议Activator.CreateInstance无济于事。我上面这样做的方式似乎它应该工作,但我得到的消息,在程序集中找不到Image_Tool(尝试null代替“AutomationSystem”,它发现当前程序集)。无法理解为什么Image_Tool在我可以分配UserControl变量时找不到= new Image_Tool()。没有代码问题有任何建议? – Radiohead
请同事看看你的肩膀。非零的可能性,他会指着他的手指说:“哥们,你忘了命名空间的名字”。 –