如何实现:Express (ISO 10303-21) TYPE typename = SELECT in C#



目前,我正在为 IFC 编写一个非常基本的早期绑定,它是按照 ISO 10303-21 中描述的快速标准映射的。 由于我两个月前才开始编码,所以我所做的一切都相当基本。但是,我已经可以在给定架构中创建所有实体和类型及其所有属性。我还能够按照 ISO 将其映射到文件。 我仍然遇到一个问题:

  • 在架构中,存在 SELECT 类型的类型,如下所示:

    TYPE IfcGridPlacementDirectionSelect = SELECT
    (IfcDirection
    ,IfcVirtualGridIntersection);
    END_TYPE; 
    

    IfcDirection 和 IfcVirtualGridIntersection 本身都是实体或类型(我为类型和实体创建了一个类)。 我的 TYPE IfcGridPlacementDirectionSelect - class 看起来像这样:

    public class IfcGridPlacementDirectionSelect :IfcBase
    {
    public IfcBase _value { get; set; }
    }
    

有没有办法将选择结构实现到 csharp 中,因此_value的属性类型是"IfcDirection"或"IfcVirtualGridIntersection",而不是我现在制作的"IfcBase"。这样选择结构就会被代表出来?

您的解决方案是合法的。但我认为你不应该创建这样的类。它打破了国际金融公司的结构。

在我的实现中,每当使用IfcGridPlacementDirectionSelect时,我都会创建 2 个函数:一个用于IfcDirection,另一个用于IfcVirtualGridIntersection

我现在通过使用泛型类实现了它。这不是一个非常优雅的方法,但它有效。唯一的问题是,现在用户可以选择任何类型。因此,您必须依靠用户知道他实际上可以选择的内容。对于我的例子,现在有效。

public class IfcGridPlacementDirectionSelect< T > : IfcBase 
{ 
public T _value { get; set; } 
}

相关内容

  • 没有找到相关文章

最新更新