T IDebuggable.GetDebugInfo <T>(int parentDepth, int childDepth) { var debug = new DebugDataScopeRules { Instance = this, Name = "data scope rules for " + ElementName, }; lock (_lock) { debug.Scopes = DataScopes .Select(s => new DebugDataScope { DataType = s.DataType, ScopeName = s.ScopeName }) .ToList(); debug.DataSupplies = SuppliedDependencies .Select(suppliedDependency => new DebugSuppliedDependency { Supplier = suppliedDependency.Item1.GetDebugInfo <DebugDataSupplier>(), DataTypeSupplied = suppliedDependency.Item2 == null ? null : new DebugDataScope { DataType = suppliedDependency.Item2.DataType, ScopeName = suppliedDependency.Item2.ScopeName } }) .ToList(); } return(debug as T); }
/// <summary> /// Serialize the data type description to XML /// </summary> /// <returns>Serialized data type descriptor</returns> 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), new XAttribute("searchable", this.Searchable), 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); }