我想要做的是从
XML保存文件加载对象.问题是那些对象可以由用户在运行时配置,这意味着我必须使用反射来获取存储在XML文件中的那些对象的名称和属性.
我正处于通过XML的递归循环中间,直到我需要创建一个对象然后想到的部分…..啊 – 不知道怎么做:(
我有一个填充空对象的数组(m_MenuDataTypes),每个可能的类型之一.我的递归加载函数看起来像这样
private void LoadMenuData(XmlNode menuDatanode) { foreach (object menuDataObject in m_MenuDataTypes) { Type menuDataObjectType = menuDataObject.GetType(); if (menuDataObjectType.Name == menuDatanode.Name) { //create object } } }
我需要在我的评论中放置一些代码,但我不能有一个大的转换语句或任何东西.我的数组中的对象可以根据用户配置应用程序的方式而更改.
解决方法
你想使用
Activator.CreateInstance(Type)
object instance = Activator.CreateInstance(menuDataObjectType);
为了使其高效工作,您可能需要限制动态创建的实例以实现接口
ICommonInterface i = (ICommonInterface)Activator.CreateInstance(menuDataObjectType)