public virtual bool Resolve() { if (this.IsResolved || !this.IsResolvable) { return(this.IsResolved); } IMetadataNode node = this.ResolveNodeSource.Find(a => this.IsSatisfiedBy(a.Metadata)); if (node != null) { this.DependentMetadataNode = node; IReferencable referencable = node as IReferencable; if (referencable != null) { referencable.AddReferencedConstraint(this); } this.IsResolved = true; } else { this.IsResolvable = false; } return(this.IsResolvable); }
protected virtual string GetMemberName(IMetadataNode member) { if (member is EntityField) return ((EntityField)member).Name; if (member is IndexField) return ((IndexField)member).Name; if (member is Link) return ((Link)member).Name; throw new InvalidOperationException("Unrecognized member type: " + member.GetType().ToString()); }
private string FormatPropertyAccessorText(IMetadataNode member, string accessorText) { if (accessorText.IndexOf("\r\n") > 0) accessorText = "\r\n" + StringHelper.IndentBlock(accessorText) + "\r\n"; return accessorText.Replace("${field}", FormatFieldName(GetMemberName(member))); }
private string GetPropertyAccessorText(IMetadataNode member, string nodeName, string defaultCode) { string txt = ""; XmlNode node = member.LoadedXmlNode.SelectSingleNode(nodeName); if (node != null && node.InnerText.Trim() != "") txt = node.InnerText; else txt = defaultCode; return txt; }
protected virtual string GetPropertySetterText(IMetadataNode member) { return GetPropertyAccessorText(member, "Set", "${field} = value;"); }
protected virtual string GetPropertyGetterText(IMetadataNode member) { return GetPropertyAccessorText(member, "Get", "return ${field};"); }
private XmlNode GetOrCreateItemNode (XmlNode listNode, IMetadataNode item, string itemElementName) { foreach (XmlNode itemNode in listNode.SelectNodes(itemElementName)) { if (item.LoadedXmlNode == itemNode) { return itemNode; } } XmlNode node = listNode.OwnerDocument.CreateElement(itemElementName); if (item.LoadedXmlNode != null) { foreach (XmlAttribute attr in item.LoadedXmlNode.Attributes) { node.Attributes.Append((XmlAttribute)attr.Clone()); } node.InnerXml = item.LoadedXmlNode.InnerXml; } listNode.AppendChild(node); return node; }