我需要基于EXPRESS模式创建类库。快递模式具有类型和实体看起来像以下:如何在CSharp中实现EXPRESS效率最高
ENTITY IfcRoot
ABSTRACT SUPERTYPE OF (ONEOF
(IfcObjectDefinition
,IfcPropertyDefinition
,IfcRelationship));
GlobalId : IfcGloballyUniqueId;
OwnerHistory : OPTIONAL IfcOwnerHistory;
Name : OPTIONAL IfcLabel;
Description : OPTIONAL IfcText;
UNIQUE
UR1 : GlobalId;
END_ENTITY;
在这里GlobalId,OwnerHistory,名称和描述是类IfcRoot的所有属性。属性类型例如“名称”的是IfcLabel,它被给定为在EXPRESS模式中的TYPE看起来像这样:
TYPE IfcLabel = STRING(255);
END_TYPE;
此类型是String类型或井柱阵列。在我的方法中,我将模式中的所有实体和模式中的所有类型实现为chsharp中的类。因此,我编写了一个字符串阅读器,读取模式并基于此创建实体(〜800)和类型(〜400)。 IfcLabel在我的实现是这样的:
public class IfcLabel
{
public string _value { get; set; }
}
它所有的工作完全正常,但是当我想用我的类库实在是费力由于每个属性的类型是类本身。这意味着我必须先创建一个IfcLabel类的对象,然后分配_value属性,然后创建我的IfcRoot对象并将Name-property分配为IfcLabel对象。 有没有人有一个想法,我怎么能以更聪明的方式实现? 还有一件事需要补充:所有类型都需要有一个方法并从一个名为IfcBase的类继承,所以仍然需要可能。我也不允许直接将IfcLabel中的属性类型更改为字符串,无论如何它实际上最终都是这样。
[工厂模式?](https://www.google.com/search?q=factory+pattern&ie=utf-8&oe=utf-8&client=firefox-b) – TaW
我以前没有听说过这种情况,但从我快速阅读它看起来像是我的问题的一个可能的解决方案。我会更深入地看,谢谢! – FlixFix
我不确定它,但我认为'express'标记不是好的,因为它看起来不像这里的nodeJs框架实现 – mJehanno