微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将未公开的c#对象序列化为XML作为XmlRoot

如何解决将未公开的c#对象序列化为XML作为XmlRoot

我正在尝试从建筑软件Revit中从CAD模型提取的数据序列化gbXML格式。对于CAD模型中的每个元素,我都将几何图形提取为多边形环。因此,我使用了Revit API的类,这些类对我来说当然是未公开的。所以现在我想知道如何将所需的XmlElements添加为我无法访问的类的子级。这是我需要生成的架构:

<PlanarGeometry>
   <polyLoop>
      <CartesianPoint>
         <Coordinate>26.20337</Coordinate>
         <Coordinate>15.67507</Coordinate>
         <Coordinate>519</Coordinate>
      </CartesianPoint>

这是我可以访问的类,其中CurveLoop是未公开的Revit API中的类,我无法在其中添加任何标签

[Serializable]
[XmlRoot("PlanarGeometry")]
public class PlanarGeometry
{
    public CurveLoop OuterLoop { get; set; }
}

我找不到任何writer.writeXML能够写入非原始类型的方法。扩展方法可能有解决方案吗?我将不胜感激任何帮助!谢谢!

解决方法

感谢您的帮助!答案1可以工作,但是需要很多工作...我认为答案2不起作用,因为我需要在插入新的xmlElements之前添加两个级别的XmlRoot-据我所知,writer.writeXML仅能够编写基元,没有XmlRoot!?

我找到的答案是通过自己定义的类替换未公开的类,例如CurveLoop通过带有列表的自有类PolyLoop。 谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。