gpt4 book ai didi

c# - 在 C# 中一般创建对象

转载 作者:太空狗 更新时间:2023-10-29 20:55:46 24 4
gpt4 key购买 nike

我想做的是从 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
}
}
}

我需要在我的注释所在的位置放置一些代码,但我不能有一个大的 switch 语句或任何东西。我的数组中的对象可能会根据用户配置应用程序的方式而改变。

最佳答案

您想使用 Activator.CreateInstance(Type)

object instance = Activator.CreateInstance(menuDataObjectType);

为了使其有效地工作,您可能需要限制动态创建的实例来实现接口(interface)

ICommonInterface i = (ICommonInterface)Activator.CreateInstance(menuDataObjectType)

这样,动态创建的对象就可以使用了——您可以调用它的接口(interface)方法。

关于c# - 在 C# 中一般创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2668300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com