gpt4 book ai didi

C# 反射(reflect)未知的子类型

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

我有一个类:

public class Chid1 : Parent{
public string var1{get;set;}
public string var2{get;set;}
}

public class Chid2 : Parent{
public string var3{get;set;}
public string var4{get;set;}
}

我正在从一个 xml 文件中收集一些数据,我需要设置这些类。

所以这就是我现在能做的:

string child = "Chid1";//from the xml
Parent instance = (Parent)Activator.CreateInstance(Type.GetType(child ) , ...);

由于 Parent 不包含有关 child 的详细信息,我不能这样做:

instance.var1 = "Some text from the XML";

这里是否有任何解决方案可以通过以下字符串设置 child :

Activator.SetParan(instance,"var1" , "Some text from the XML");

还是别的?

最佳答案

你有没有考虑过在这里使用dynamic。这将使代码更简单。

dynamic instance = Activator.CreateInstance(Type.GetType(child ) , ...);
instance.var1 = "some text from the XML";

另外,您是否有理由不使用已知的序列化引擎。如果您只是将对象从 XML 流序列化为一个对象,那么有许多现有的解决方案可以让您的生活更轻松

关于C# 反射(reflect)未知的子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8015627/

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