目前我正在为IFC编写一个非常基本的早期绑定,按照ISO 10303-21中描述的Express标准进行映射。 因为我刚刚开始编码两个月前,我所做的一切仍然是相当基本的。但是,我已经可以在给定模式中创建具有所有属性的所有实体和类型。我也可以按照ISO将其映射到文件。 我遇到了一个问题:
,有些类型是SELECT类型,看起来像下面这样:
TYPE IfcGridPlacementDirectionSelect = SELECT
(IfcDirection
,IfcVirtualGridIntersection);
END_TYPE;
IfcDirection和IfcVirtualGridIntersection本身都是实体或类型(我同样为类型和实体创建一个类)。 我的TYPE IfcGridPlacementDirectionSelect - 类看起来像这样:
public class IfcGridPlacementDirectionSelect :IfcBase
{
public IfcBase _value { get; set; }
}
有没有办法将select结构实现到csharp中,所以_value的属性类型是“IfcDirection”或“IfcVirtualGridIntersection”而不是我现在正在制作的“IfcBase”。那么SELECT结构会被表示吗?
答案 0 :(得分:1)
您的解决方案是合法的。但我认为你不应该创建这样的类。它破坏了IFC的结构。
在我的实施中,每当使用IfcGridPlacementDirectionSelect
时,我都会创建2个函数:一个用于IfcDirection
,另一个用于IfcVirtualGridIntersection
。
答案 1 :(得分:0)
我现在通过使用Generic Class实现了它。这不是一个非常优雅的方法,但它的工作原理。唯一的问题是,现在用户可以选择任何类型。因此,您必须依赖用户知道他实际可以选择的内容。对于我现在有效的例子。
public class IfcGridPlacementDirectionSelect< T > : IfcBase
{
public T _value { get; set; }
}