加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

通常在C#中创建对象

发布时间:2020-12-15 18:27:46 所属栏目:百科 来源:网络整理
导读:我想要做的是从 XML保存文件加载对象.问题是那些对象可以由用户在运行时配置,这意味着我必须使用反射来获取存储在XML文件中的那些对象的名称和属性. 我正处于通过XML的递归循环中间,直到我需要创建一个对象然后想到的部分…..啊 – 不知道怎么做:( 我有一个
我想要做的是从 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)

这样,动态创建的对象变得可用 – 您可以在其上调用接口方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读