CodeGenerationUtilities 類別
程式碼產生範本所使用的公用程式
繼承階層架構
System.Object
Microsoft.VisualStudio.Modeling.DslDefinition.CodeGenerationUtilities
命名空間: Microsoft.VisualStudio.Modeling.DslDefinition
組件: Microsoft.VisualStudio.Modeling.Sdk.DslDefinition.12.0 (在 Microsoft.VisualStudio.Modeling.Sdk.DslDefinition.12.0.dll 中)
語法
'宣告
Public NotInheritable Class CodeGenerationUtilities
public static class CodeGenerationUtilities
CodeGenerationUtilities 類型會公開下列成員。
方法
名稱 | 描述 | |
---|---|---|
AddSerializationResourceStrings | 加入產生之序列化程式所使用的資源字串。在此新增的字串並未當地語系化,因為它們用來產生 resx 檔案(其會被當地語系化)。 | |
AllowMultiple | 取得指定的角色是否根據其多重性允許多個執行個體。 | |
CalculateInheritanceDepth | 有了 DomainClass,計算所產生程式碼的繼承深度 (需考量雙衍生基底類別)。這用來判斷我們是否需要「過度繼承」的 SuppressMessage 屬性。 | |
CreateXmlNamespaceQualifiers | 為 dslLibrary 及其第一層級匯入程式庫建立 xmlNamespaceQualifiers | |
DefinesDiagramElements | 如果指定的 DslLibrary 會定義圖表項目,則為 true,否則為 false。圖表項目是 DslLibrary.DiagramElements 中所包含的項目加上圖表 (如果有定義圖表的話)。 | |
DefinesNewTargetRole | 在關聯性衍生中,關聯性可以與其父關聯性使用相同的目標角色扮演者,也可以定義新目標角色扮演者 (衍生自父關聯性的目標角色扮演者)。這個方法會辨別指定的 DomainRelationship 是否會定義新的目標角色扮演者。 | |
GenerateFontStyle | 建立初始化字型樣式的正確語法。 | |
GetAccessModifier | 取得指定的 AccessModifier 列舉的 C# 存取修飾詞關鍵字 | |
GetAttributeProperties | 傳回所有在指定之 DomainClass 所定義且會序列化為 XML 屬性的所有 DomainProperties。 | |
GetBaseClass | 取得宣告網域類別之基底類別的字串。如果未定義基底類別,則會使用 ModelElement。 | |
GetBaseDomainClass | 取得提供的類別的基底網域類別。 | |
GetBaseDomainClassMonikerSchemaTypeName | 取得指定之網域類別的基底類別的 Moniker 結構描述型別名稱。 | |
GetBaseDomainClassMonikerTagName | 取得所提供之網域類別序列化成 Moniker 時的 MonikerTagName。請注意,moniker 的標記名稱不能相同,因為那會需要所產生的結構描述中相同項目的兩個定義。所使用的預設名稱 (如果未指定使用"XmlClassData.MonikerElementName"),"Moniker" 前面會是未以 Moniker 方式處理過的 XmlTagName。 | |
GetBaseDomainClassSchemaTypeName | 取得指定之網域類別的基底類別的結構描述型別名稱。 | |
GetBaseDomainClassXmlTagName | 取得所提供之網域類別的基底類別的 XmlTagName。 | |
GetBasePropertyHandlerName | 取得給定屬性之 PropertyHandler 的基底類別。如果是計算的屬性則基底類別會不同。 | |
GetBaseRelationship | 取得宣告網域關聯性之基底關聯性的字串。如果未定義基底類別,則會使用 ElementLink。 | |
GetBaseRole | 取得給定角色的基底角色 (如果有的話)。否則會傳回 null。 | |
GetCamelCase | 藉由將第一個字元小寫的方式,將輸入字串轉換為 Camel 大小寫 | |
GetDesigner | 取得指定之 DslLibrary 中定義的設計工具。 | |
GetDiagramElementForDecoratorMap | 取得與定義 Decorator 對應之圖案或接點對應相關聯的圖表項目。 | |
GetDomainClassMonikerSchemaTypeName | 取得指定之網域類別的 Moniker 結構描述型別名稱。 | |
GetDomainClassMonikerTagName(DomainClass, String) | 取得網域類別序列化成 Moniker 時的 MonikerTagName。請注意,moniker 的標記名稱不能相同,因為那會需要所產生的結構描述中相同項目的兩個定義。所使用的預設名稱 (如果未指定使用"XmlClassData.MonikerElementName"),"Moniker" 前面會是未以 Moniker 方式處理過的 XmlTagName。 | |
GetDomainClassMonikerTagName(DomainClass, String, Dictionary<DslLibrary, String>) | 取得網域類別序列化成 Moniker 時的 MonikerTagName。請注意,moniker 的標記名稱不能相同,因為那會需要所產生的結構描述中相同項目的兩個定義。所使用的預設名稱 (如果未指定使用"XmlClassData.MonikerElementName"),"Moniker" 前面會是未以 Moniker 方式處理過的 XmlTagName。 | |
GetDomainClassSchemaTypeName | 取得指定之網域類別的結構描述型別名稱。 | |
GetDomainClassXmlTagName(DomainClass, String) | 取得網域類別的 XmlTagName。 | |
GetDomainClassXmlTagName(DomainClass, String, Dictionary<DslLibrary, String>) | 取得網域類別的 XmlTagName。 | |
GetDomainTypeFullName(DomainProperty) | 取得 DomainProperty 的型別的完整名稱 (包括泛用參數),相對於該屬性的類別的命名空間。 | |
GetDomainTypeFullName(DomainType, String) | 取得 DomainType 的完整名稱 (包括泛用參數),相對於指定的目前命名空間。 | |
GetElementProperties | 傳回在指定 DomainClass 上定義且會序列化為巢狀 XML 項目的所有 DomainProperties。 | |
GetGeneratedLinkAccessModifier | 傳回 DomainRelationship 及其角色扮演者之間傳遞的型別存取修飾詞中限制最大者。 | |
GetGeneratedPropertyGetterAccessModifier | 傳回 getter 屬性修飾詞,用於 DomainRelationship 類別中 Get/Set 屬性 | |
GetGeneratedPropertySetterAccessModifier | 傳回 setter 屬性修飾詞,用於 DomainRelationship 類別中的 Get/Set 屬性 | |
GetGenerationClassName | 傳回要產生的類別名稱。如果是雙衍生類別,我們會在網域類別名稱中加入 'Base'。否則會使用網域類別名稱。 | |
GetGenerationInheritanceModifier | 取得網域類別的類別修飾詞。如果類別是雙衍生類別則傳回「抽象」,因為雙衍生組中產生的類別 (基底類別) 永遠是抽象 | |
GetGuid | 傳回格式為「new System.Guid(xxx)」的字串,其中 xxx 是指定 guid 的字串格式。 | |
GetInheritanceModifier | 取得指定的 InheritanceModifier 列舉的 C# 修飾詞關鍵字 | |
GetMethodModifier | 在產生的程式碼中,取得具有給定參數的方法修飾詞 (virtual、override 等等)。 | |
GetModelElementDomainClass | 傳回代表 ModelElement 的 DomainClass | |
GetNameProperty | 傳回可用於識別使用者項目的屬性 (在這個類別或基底類別)。傳回標記 IsElementName 的屬性。若無則會傳回標記為 IsMonikerKey 的屬性。若無則會傳回 null。 | |
GetPackageNamespace | 取得指定之 Dsl 的 Dsl 封裝名稱。 | |
GetPropertyDefaultValue | 傳回字串,用來宣告屬性的預設值 (以 "= defaultValue" 的形式 | |
GetPropertyDefaultValueAttribute | 取得 System.ComponentModel.DefaultValueAttribute 的建構函式的字串。 | |
GetPropertyHandlerName | 取得屬性的屬性處理常式名稱。 | |
GetPropertyKind | 傳回 DomainPropertyAttribute 建構函式的屬性種類的字串。 | |
GetPropertyRepresentation | 取得指定之 DomainProperty 的 PropertyRepresentation (屬性、項目或忽略)。如果沒有指定則預設為 Attribute。 | |
GetPropertyTagName | 取得所指定 DomainProperty 的 XML 標記名稱。標記名稱會是 XML 屬性名稱(如果屬性已序列化為 XML 屬性), 或 XML 項目名稱(如果屬性已序列化為巢狀 XML 項目)。 | |
GetRelationshipTagName | 取得指定之角色關聯性的 XML 角色項目名稱。注意:這是 RoleElementName (如果有定義),而不是完整格式關聯性的 XML 標記名稱 (這是從 GetDomainClassXmlTagName() 傳回)。 | |
GetSameNameBaseRole | 如果指定角色的基底角色和該指定角色名稱相同,則傳回該基底角色。 | |
GetSegmentInputType(PathSegment) | 對於指定的 pathSegment,這個方法會傳回其輸入型別的完整限定名稱。 | |
GetSegmentInputType(PathSegment, Boolean) | 對於指定的 pathSegment,這個方法會傳回其輸入型別的完整限定名稱。 | |
GetSegmentOutputType(PathSegment) | 對於指定的 pathSegment,這個方法會傳回其輸出型別的完整限定名稱。 | |
GetSegmentOutputType(PathSegment, Boolean) | 對於指定的 pathSegment,這個方法會傳回其輸出型別的完整限定名稱。 | |
GetSerializedDomainClasses | 取得指定 DslLibrary 中所有將會產生序列化程式之 DomainClasses 的清單。 | |
GetTypeAccessModifier | 取得指定的 TypeAccessModifier 列舉的 C# 存取修飾詞關鍵字 | |
GetTypeRole | 取得角色,會決定已針對此角色產生之屬性的型別。這是和這個角色具有相同名稱的最基底角色。 | |
GetVersionString | 取得字串形式的 DslLibrary 版本。 | |
GetXmlSchemaNamespace | 取得要用於產生之結構描述的 XML 命名空間 | |
HasCompartmentMaps | 如果指定的圖表會定義 CompartmentMaps,則為 true。 | |
HasCustomBaseImplementation | 已過時。指定的 DomainClass (或任何其基底 DomainClasses) 是否標示為 "IsCustom",這表示序列化作業是自訂的。 | |
HasCustomTypeDescriptor | 如果指定類別已定義自訂型別描述元,則傳回 true,否則傳回 false。 | |
HasNonAbstractBaseClass | 判斷指定的 DomainClass 是否具有非抽象的基底類別。有需要判斷是否需要產生 "new" 關鍵字。 | |
IsCoreDomainModel | 傳回所提供的類別是否為核心網域模型 | |
IsElementLinkDomainClass | 傳回所提供的網域類別是否代表 "ElementLink"。 | |
IsGuidType | 如果 typeName 代表 Guid ("System.Guid") 則傳回 true。 | |
IsInCoreDomainModel | 傳回所提供的類別是否為核心網域模型的一部分 | |
IsLaxElementSchemaRequired | 類別是否需要鬆散的項目結構描述型別定義 | |
IsModelElementDomainClass | 傳回所提供的網域類別是否代表 "ModelElement"。 | |
IsMultiple | 如果指定的多重性上限為 * 則傳回 true | |
IsOuterDecorator(DiagramElementHasDecorators) | 如果指定的連結會連接至外部裝飾項目,則傳回 true。 | |
IsOuterDecorator(ShapeDecoratorPosition) | 如果指定的 ShapeDecorationPosition 為外部裝飾項目,則傳回 true。 | |
IsRootClass | 如果 DomainClass 是根類別,其所有序列化相關方法/屬性將會是虛擬 (除非是密封);否則,這些方法/屬性將會是「覆寫」方法/屬性,而且會呼叫基底實作。目前來說,如果 DomainClass 直接衍生自 Microsoft.VisualStudio.Modeling.ModelElement 或 Microsoft.VisualStudio.Modeling.ElementLink,則其為根類別。 | |
IsStringProperty | 如果屬性的型別是字串則傳回 true。 | |
IsStringType | 如果 typeName 代表字串 ("string" 或 "System.String") 則傳回 true | |
MapToSchemaType | 將 DomainType 對應到它的結構描述型別。 | |
OmitElement | 取得指定的 DomainRelationship 是否已序列化為 "OmitElement" (不含角色項目標記)。 | |
RequiresGeneratedPropertyDescriptor | 如果指定的描述元要求產生 PropertyDescriptor 衍生類別則傳回 true,否則傳回 false。 | |
SortDomainClassesByInheritance<T> | 根據相對繼承關聯性排序 DomainClasses 集合。最具衍生性的一個會出現在排序結果的第一個。這用在下列情況: 假設您有 4 個 DomainClasses A、 B、 C 和 D。您必須產生一些程式碼,看起來如下:...的 a = obj as A; if (a != null) ...B b = obj as B; if (b != null) ...C c = obj as C; if (c != null) ...D d = obj as D; if (d != null) ......如果 C 衍生自 A,上述的程式碼是錯誤的;正確的程式碼應該要先檢查 C 再檢查 A。因此需呼叫此方法來依繼承順序排列 DomainClasses 為了繼承,而且產生的程式碼會看起來像:...C c = obj as C; if (c != null) ...的 a = obj as A; if (a != null) ...B b = obj as B; if (b != null) ...D d = obj as D; if (d != null) ...... | |
SortProperties | 依 XmlElement.Order 排序 DomainProperties (若有指定)。根據預設,每個屬性的順序為 0。順序較小的屬性先出現。相同順序的屬性不會排序 (也就是在排序後仍會保持相對順序)。排序已就位,所以傳入之集合會直接變更。 | |
SortRoles | 依 XmlRelationshipElement.Order 排序 DomainRoles (若有指定)。根據預設,每個角色的順序為 0。順序較小的角色先出現。相同順序的角色不會排序 (也就是在排序後仍會保持相對順序)。排序已就位,所以傳入之集合會直接變更。 | |
UseFullForm | 取得指定的 DomainRelationship 是否會以完整格式序列化。 | |
WrapAsCSharpString | 將指定的字串包裝成 C# 語法的字串常值。 |
回頁首
欄位
名稱 | 描述 | |
---|---|---|
CoreDomainModelNamespacePrefix |
回頁首
執行緒安全
這個類型的任何 Public static (在 Visual Basic 中為 Shared) 成員都是安全執行緒。不保證任何執行個體成員是安全執行緒。