網域屬性的屬性
「網域屬性」(domain property) 是模型項目的功能,可以存放值。 例如,Person
網域類別可能具有屬性 Name
和 BirthDate
。 在 DSL 定義中,網域屬性會列在圖表上的網域類別方塊中以及 DSL Explorer 中的網域類別之下。 如需詳細資訊,請參閱如何定義特定領域語言。
注意
"property" 一字有兩種用法。 「網域屬性」(domain property) 是您在網域類別上定義的功能。 相反地,DSL 的許多項目都具有「屬性」(properties) ,這些屬性列在 DSL 定義的 [屬性] 視窗中。 例如,每個網域屬性都有一組屬性,這些屬性會在本主題中說明。
在執行階段,當使用者建立網域類別的執行個體時,可以在 [屬性] 視窗中看到網域屬性的值,並可顯示在圖形上。
大部分的網域屬性會以一般 CLR 屬性實作。 然而,從程式設計的觀點而言,網域屬性的功能比一般程式屬性的功能更豐富:
您可以定義監視屬性狀態的規則和事件。 如需詳細資訊,請參閱 回應和傳播變更 (部分機器翻譯)。
異動有助於防止不一致的狀態。 如需詳細資訊,請參閱在程式碼中巡覽和更新模型。
當您在圖表或 DSL Explorer 中選取 [網域屬性] 時,可以在 [屬性] 視窗中查看下列項目。 如需如何使用這些項目的詳細資訊,請參閱自訂和擴充特定領域語言。
屬性 | Description | 預設值 |
---|---|---|
說明 | 此描述可用來記載產生之設計工具的使用者介面 (UI)。 | <none> |
顯示名稱 | 將在產生的設計工具中針對此網域屬性顯示的名稱。 它可以包含空格和標點符號,例如 "Song Title"。 | <none> |
元素名稱提供者 | 如果您將 Is Element Name 設為 true ,才適用此提供者。 您可以撰寫程式碼,為網域類別的新項目提供名稱,覆寫預設行為。在 DSL 專案的程式碼檔中,建立從 ElementNameProvider 衍生的類別。 然後在 DSL Explorer 中,以滑鼠右鍵按一下 DSL 的根 ,然後按一下 [加入外部類型]。 輸入您的類別名稱。 再度選取此網域屬性,然後在下拉式清單中選取類別的名稱。 |
<none> |
Getter 存取修飾詞 | 網域類別的存取層級 (public 或 internal )。 此層級可控制程式碼存取屬性的範圍。 |
public |
說明關鍵字 | 這個選擇性關鍵字可用來為此網域屬性編製 F1 說明的索引。 | <none> |
Is Browsable | 如果為 True ,則在此 DSL 的模型開啟時,會在屬性視窗中向使用者顯示網域屬性。如果為 False ,則在 UI 中會隱藏網域屬性。如果您要使網域屬性可見但卻是唯讀,請設定 [Is UI Read Only]。 |
True |
Is Element Name | 如果為 True ,此網域屬性將在 DSL Explorer 中顯示為其模型項目的名稱。新的模型項目將接收此屬性的唯一預設值。 如果您要控制這些值的產生方式,請設定 [項目名稱提供者]。 |
False |
Is UI Read Only | 如果為 True ,則無法使用 UI 變更網域屬性的值。 它仍然可由程式設定,並且可以在 [屬性] 視窗中看見它。如果您要隱藏網域屬性,不讓使用者看到,請設定 [Is Browsable]。 如果您要藉由程式控制存取,請設定 [Setter 存取修飾詞]。 |
False |
種類 | 網域屬性的類型 (Normal 、Calculated 或 CustomStorage )。 如需詳細資訊,請參閱計算及自訂的儲存區屬性。 |
Normal |
名稱 | 此網域屬性的名稱。 它必須是有效的識別項,例如 SongTitle。 | <none> |
注意事項 | 與此網域屬性相關聯的非正式附註。 | <none> |
Setter 存取修飾詞 | Setter 的存取修飾詞。 此修飾詞可控制程式碼設定屬性的範圍。 | public |
類型 | 屬性的類型。 若要加入變數類型的清單,請以滑鼠右鍵按一下 DSL Explorer 中的 DSL 根 ,然後按一下 [加入外部類型]。 | String |
另請參閱
- Domain-Specific Language Tools Glossary (特定領域語言工具字彙表)