如何访问/创建C#xsd自动生成字段

如何访问/创建C#xsd自动生成字段,c#,xsd,C#,Xsd,我有一组由XSD.exe从XSD生成的类。我试图通过从CSV文件读取数据来动态填充这些类上的一些字段。我遇到的问题是,在创建根对象时,表示其他生成类的任何属性都没有实例化,因此它们只是空的 例如,如果我创建一个根文档Main_消息的实例“doc”,其属性“field1”的类型为Sub_Message,doc.field1为null,那么如果我尝试设置doc.field1.name,我将得到一个异常 关于如何解决这个问题,我的第一个想法是对这些对象属性进行读取时创建。因为生成的类是分部类,所以我可

我有一组由XSD.exe从XSD生成的类。我试图通过从CSV文件读取数据来动态填充这些类上的一些字段。我遇到的问题是,在创建根对象时,表示其他生成类的任何属性都没有实例化,因此它们只是空的

例如,如果我创建一个根文档Main_消息的实例“doc”,其属性“field1”的类型为Sub_Message,doc.field1为null,那么如果我尝试设置doc.field1.name,我将得到一个异常

关于如何解决这个问题,我的第一个想法是对这些对象属性进行读取时创建。因为生成的类是分部类,所以我可以为每个生成的类手动执行此操作,修改属性getter。然而,我真的想避免这种做法。有很多生成的类,我不想在XSD更改时维护修改后的版本

我的下一个想法是在代码中读取CSV数据的类的外部创建读取。我首先读取属性,如果它为null,则创建类的实例并将其分配给该属性,然后在该属性上设置字段。但是我不知道该怎么做。我可以使用Activator.CreateInstance(propertyType)创建该类的实例,但这会返回一个基本对象引用,如果没有强制转换,我无法将其分配给该属性。但是,我在编译时没有类型名,所以我不能进行转换


因此,我试图找出如何处理这些生成的类,从CSV文件中读取字段值并填充文档对象上的字段,然后使用这些字段创建XML。我现在很困惑如何做到这一点。

好的,经过多次搜索,我找到了一个有效的解决方案

public static T Cast<T>(object o)
{
  return (T)o;
}

obj = Activator.CreateInstance(prop.PropertyType);
MethodInfo castMethod = typeof(MainClass).GetMethod("Cast").MakeGenericMethod(prop.PropertyType);
prop.SetValue(parent, castMethod.Invoke(null, new object[] { obj }), null);
publicstatict-Cast(对象o)
{
返回(T)o;
}
obj=Activator.CreateInstance(prop.PropertyType);
MethodInfo castMethod=typeof(MainClass).GetMethod(“Cast”).MakeGenericMethod(prop.PropertyType);
prop.SetValue(父对象,castMethod.Invoke(null,新对象[]{obj}),null);
因此,我能够在运行时根据需要创建和分配属性