【问题标题】:Serialize undisclosed c#-object to XML as XmlRoot将未公开的 c#-object 序列化为 XML 作为 XmlRoot
【发布时间】:2020-10-05 15:47:06
【问题描述】:

我正在尝试从我从建筑软件 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 的任何方法能够编写非原始类型。扩展方法可能有任何解决方案吗?我将非常感谢任何帮助!谢谢!

【问题讨论】:

标签: c# xml serialization revit-api gbxml


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多