我需要基於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