/// <summary> /// /// </summary> /// <example> /// Xml example: /// <![CDATA[ /// <Property Type="String" Name="City" MaxLength="50" FixedLength="false" Unicode="true" /> /// ]]> /// </example> /// <param name="file"></param> /// <param name="ct"></param> /// <param name="prop"></param> /// <returns></returns> public static MetaComplexTypeProperty Parse(MetaModel metaModel, MetaComplexType ct, XElement prop) { var p = new MetaComplexTypeProperty { FullName = ct.FullName.Dot(prop.Att("Name")), Name = prop.Att("Name"), Type = prop.Att("Type"), ComplexType = ct }; return p; }
/// <summary> /// /// </summary> /// <example> /// Xml Example: /// <![CDATA[ /// <ComplexType Name="Location"> /// <Property Type="String" Name="City" MaxLength="50" FixedLength="false" Unicode="true" /> /// <Property Type="String" Name="State" MaxLength="50" FixedLength="false" Unicode="true" /> /// <Property Type="String" Name="Country" MaxLength="50" FixedLength="false" Unicode="true" /> /// </ComplexType> /// ]]> /// </example> /// <param name="metaModel"></param> /// <param name="cType"></param> /// <returns></returns> public static MetaComplexType Parse(MetaModel metaModel, XElement cType) { var fullName = metaModel.Namespace.Dot(cType.Att("Name")); if (metaModel.ComplexTypes.ContainsKey(fullName)) return metaModel.ComplexTypes[fullName]; var ct = new MetaComplexType(); ct.FullName = fullName; ct.Name = cType.Att("Name"); foreach (var prop in cType.Es("Property")) { ct.Properties.Add(MetaComplexTypeProperty.Parse(metaModel, ct, prop)); } metaModel.ComplexTypes.Add(ct.FullName, ct); return ct; }