gpt4 book ai didi

c# - 如何使用反射根据xml文件中的文本实例化一个新类

转载 作者:太空宇宙 更新时间:2023-11-03 19:29:48 24 4
gpt4 key购买 nike

我有一个基地 Question类和许多派生自此类的类,如 CheckboxQuestion类和 RadioButtonQuestion

程序为问题标签内的每个 block 迭代 xml 代码,它将根据标签的名称创建一个新元素,并且是问题类

        <question number="1">
<RadioButtonQuestion>
<title>What is the right ...</title>
<choices>
<choice value="1">answer 1</choice>
<choice value="2">answer 2</choice>
<choice value="3">answer 3</choice>
<choice value="4">answer 4</choice>
</choices>
</RadioButtonQuestion>
</question>

在迭代所有 xml 文件后,我想将所有问题放在 IEnumerable<Questions> 中问题是我不知道如何根据 xml 文档中编写的文本创建一个新类

最佳答案

如果 XML 标记直接反射(reflect)了您的类的名称,您可以使用 Type.GetType() 来确定相应的类型 - 请记住它需要完整的命名空间(“Test”在下面的例子)。然后您可以使用 Activator.CreateInstance() 创建该类型的实例。

string xmlTagName = "RadioButtonQuestion";
Type type = Type.GetType("Test." + xmlTagName );
var question = Activator.CreateInstance(type);

另请记住,Activator.CreateInstance() 返回object。如果您根据标签名称确定正确的类型,然后以老式的方式实例化一个实例,总体上可能会更好。

关于c# - 如何使用反射根据xml文件中的文本实例化一个新类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5761365/

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