C# 从复杂xsd生成的类,尝试序列化会产生nullreferenceexception

C# 从复杂xsd生成的类,尝试序列化会产生nullreferenceexception,c#,xml,xsd,C#,Xml,Xsd,几个小时来我一直在挠头。谷歌也在搜索。但是,我不知道如何正确地生成xml。非常感谢能帮助我解决这个问题的意见。我在前面使用过xsd.exe和不太复杂的方案,没有任何问题 所以我得到了一个错误:对象引用未设置为对象的实例 我已经从这个xsd文件创建了C#类: 我使用Microsoft xsd.exe工具创建了如下类:xsd.exe xsd file/classes 然后我删除了像[]这样的双括号,并将其替换为single[],否则我根本无法序列化/反序列化 我实际上不知道用xsd文档生成的类创建x

几个小时来我一直在挠头。谷歌也在搜索。但是,我不知道如何正确地生成xml。非常感谢能帮助我解决这个问题的意见。我在前面使用过xsd.exe和不太复杂的方案,没有任何问题

所以我得到了一个错误:对象引用未设置为对象的实例

我已经从这个xsd文件创建了C#类:

我使用Microsoft xsd.exe工具创建了如下类:xsd.exe xsd file/classes

然后我删除了像[]这样的双括号,并将其替换为single[],否则我根本无法序列化/反序列化

我实际上不知道用xsd文档生成的类创建xml文件的正确方法。以下是此类xml文件的示例:

这是我正在尝试序列化的对象(只是一个示例):


直线跟踪点[0]。时间=日期时间。现在;给出了所提到的错误。但我认为,与xsd/xml的外观相比,这与我创建类/xml的错误更相关

有人能告诉我如何从xsd.exe生成的类构建xml的正确方向吗

编辑:谢谢YavgenyP!就是这样,这个代码正在运行:

        XmlObjects.Tcx20.TrainingCenterDatabase_t tcx = new XmlObjects.Tcx20.TrainingCenterDatabase_t();
        XmlObjects.Tcx20.AbstractSource_t abstractSource = new XmlObjects.Tcx20.Application_t();

        abstractSource.Name = "TcxCreator";

        tcx.Author = abstractSource;
        abstractSource = new XmlObjects.Tcx20.Application_t();

        XmlObjects.Tcx20.ActivityList_t activityList = new XmlObjects.Tcx20.ActivityList_t();

        XmlObjects.Tcx20.Activity_t[] activity = new XmlObjects.Tcx20.Activity_t[1];
        XmlObjects.Tcx20.ActivityLap_t[] lap = new ActivityLap_t[1];
        XmlObjects.Tcx20.Course_t[] course = new Course_t[1];
        XmlObjects.Tcx20.Trackpoint_t[] trackPoint = new Trackpoint_t[1];
        XmlObjects.Tcx20.Position_t position = new Position_t();

        double lat = 10;
        double lon = 11;

        position.LatitudeDegrees = lat;
        position.LongitudeDegrees = lon;

        trackPoint[0] = new Trackpoint_t {Time = DateTime.Now, Position = position};
        lap[0] = new ActivityLap_t {Track = trackPoint};
        activity[0] = new Activity_t {Lap = lap};

        activityList.Activity = activity;

        tcx.Activities = activityList;

直线跟踪点[0]。时间=日期时间。现在;给出了所提到的错误

查看您的代码,您可以在此处初始化上述数组:

XmlObjects.Tcx20.Trackpoint_t[] trackPoint = new Trackpoint_t[1];
但是您从未在数组中初始化轨迹点本身,这会导致

trackPoint[0].Time = DateTime.Now; 

失败(trackPoint[0]仍然为空)

因此我得到了一张否决票。。。我该如何重新措辞?我搔了好几个小时的头,想不出一个解决办法。我也经常在谷歌上搜索。我应该补充一些信息吗?什么?我可以添加由xsd生成的整个类,以及xsd本身,但这是一个非常多的文本。。。请指导我。到底哪一行生成NullReferenceException?只是把代码扔给我们,说某个地方有问题,很可能是导致其他人投反对票的原因。Line trackPoint[0]。Time=DateTime.Now;给出了所提到的错误。但我认为,与xsd/xml的外观相比,这与我创建类/xml的错误更相关。我应该发布由xsd.exe生成的xml对象吗?也许有人可以很容易地告诉你如何构建文档?你可能会投反对票,因为这是一个调试问题,至少你避免了。可能的重复
trackPoint[0].Time = DateTime.Now;