public XElement ToXml()
{
var element = new XElement("DataTypeDescriptor",
new XAttribute("dataTypeId", this.DataTypeId),
new XAttribute("name", this.Name),
new XAttribute("namespace", this.Namespace),
this.Title != null ? new XAttribute("title", this.Title) : null,
new XAttribute("isCodeGenerated", this.IsCodeGenerated),
new XAttribute("cachable", this.Cachable),
this.LabelFieldName != null ? new XAttribute("labelFieldName", this.LabelFieldName) : null,
!string.IsNullOrEmpty(this.InternalUrlPrefix) ? new XAttribute("internalUrlPrefix", this.InternalUrlPrefix) : null,
this.TypeManagerTypeName != null ? new XAttribute("typeManagerTypeName", this.TypeManagerTypeName) : null,
!string.IsNullOrEmpty(this.BuildNewHandlerTypeName) ? new XAttribute("buildNewHandlerTypeName", this.BuildNewHandlerTypeName) : null);
element.Add(new[]
{
new XElement("DataAssociations",
DataAssociations.Select(da => da.ToXml())),
new XElement("DataScopes",
DataScopes.Select(dsi => new XElement("DataScopeIdentifier", new XAttribute("name", dsi)))),
new XElement("KeyPropertyNames",
KeyPropertyNames.Select(name => new XElement("KeyPropertyName", new XAttribute("name", name)))),
VersionKeyPropertyNames.Any()
? new XElement("VersionKeyPropertyNames",
VersionKeyPropertyNames.Select(name => new XElement("VersionKeyPropertyName", new XAttribute("name", name))))
: null,
new XElement("SuperInterfaces",
SuperInterfaces.Select(su => new XElement("SuperInterface", new XAttribute("type", TypeManager.SerializeType(su))))),
new XElement("Fields", Fields.Select(f => f.ToXml()))
});
if (Indexes.Any())
{
element.Add(new XElement("Indexes", Indexes.Select(i => i.ToXml())));
}
return element;
}