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

How to implement: Express (ISO 10303-21) TYPE typename = SELECT in C#

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

有什么方法可以将 select 结构实现到 csharp 中,所以 _value 的 属性 类型是 "IfcDirection" 或 "IfcVirtualGridIntersection" 而不是我的现在 "IfcBase"。这样 SELECT 结构就会被表示出来?

我现在使用通用 Class 实现了它。这不是一个非常优雅的方法,但它确实有效。唯一的问题是,现在用户可以 select 任何类型。因此,您必须依靠用户知道他实际上可以做什么 select。对于我现在有效的示例。

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

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

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