我正在使用DevExpress组件控件。我想从字符串值
创建控件喜欢“DevExpress.XtraEditors.TextEdit”。我知道我可以用反射来做这个
var textBoxType = typeof(Control).Assembly.GetType("System.Windows.Forms.TextBox", true);
var textBox = Activator.CreateInstance(textBoxType);
我想用这个来编写小代码。但是DevExpress有很多命名空间和类。 除非给出一个MainClass,否则我可以从字符串创建控件吗? (比如我的示例代码typeof(Control)) 如果我不能让我必须使用很多if
答案 0 :(得分:2)
您需要知道定义类的程序集。
例如,所有编辑都在DevExpress.XtraEditors.vX.Y.dll
或typeof(BaseEdit).Assembly
。
如果您不知道它定义了哪个程序集,您可以创建一个DevExpress程序集集合(typeof(GridControl).Assembly, typeof(TreeList).Assembly, ...
)并循环遍历它们,直到asm.GetType(name)
不返回null
。
请注意,它会非常慢。