本文整理汇总了C#中ITemplate.GetUniqueId方法的典型用法代码示例。如果您正苦于以下问题:C# ITemplate.GetUniqueId方法的具体用法?C# ITemplate.GetUniqueId怎么用?C# ITemplate.GetUniqueId使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ITemplate
的用法示例。
在下文中一共展示了ITemplate.GetUniqueId方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TryProcess
public bool TryProcess(IDocumentProcessor docProcessor, XmlNode node, bool isRoot, ITemplate template, IRenderFunction currentRenderFunction) {
if (node.NodeType != XmlNodeType.Element || node.Name != "control")
return false;
if (isRoot)
throw ParserUtils.TemplateErrorException("The root element can not be a control.");
string id = null;
string type = null;
bool customInstantiate = false;
Dictionary<string, TypedMarkupData> additionalProperties = new Dictionary<string, TypedMarkupData>();
Utils.DoForEachAttribute(node, delegate(XmlAttribute attr) {
if (attr.Name == "id") {
if (!ParserUtils.IsValidUnqualifiedName(attr.Value))
throw ParserUtils.TemplateErrorException("The id '" + attr.Value + "' is not a valid identifier.");
id = attr.Value;
}
else if (attr.Name == "type") {
if (string.IsNullOrEmpty(attr.Value))
throw ParserUtils.TemplateErrorException("The control type '" + attr.Value + "' is invalid.");
type = attr.Value;
}
else if (attr.Name == "customInstantiate") {
string v = attr.Value.ToLowerCase();
customInstantiate = Utils.ParseBool(v);
}
else {
additionalProperties[attr.Name] = docProcessor.ParseTypedMarkup(attr.Value);
}
});
if (customInstantiate && additionalProperties.Count > 0)
throw ParserUtils.TemplateErrorException("There can not be any property assignments when customInstantiate is true.");
if (type == null)
throw ParserUtils.TemplateErrorException("The control '" + id + "' does not have a type specified.");
if (id == null)
id = template.GetUniqueId();
if (template.HasMember(id))
throw ParserUtils.TemplateErrorException("Duplicate definition of member " + id);
var dependencies = new List<IMember>();
int numInnerFragments = 0;
if (Utils.GetNumChildNodes(node) > 0) {
Utils.DoForEachChild(node, delegate(XmlNode n) {
if (n.OuterXml.Trim() != "") {
numInnerFragments++;
string innerName = id + "_inner" + Utils.ToStringInvariantInt(numInnerFragments);
if (template.HasMember(innerName))
throw ParserUtils.TemplateErrorException("The internal name " + innerName + " is already in use.");
IRenderFunction innerFunction = new RenderFunctionMember(innerName, "");
template.AddMember((IMember)innerFunction);
docProcessor.ProcessRecursive(n, template, innerFunction);
dependencies.Add(innerFunction);
}
});
}
if (!template.HasMember("Container"))
template.AddMember(new PropertyMember("Container", "IContainer", "IContainer", AccessModifier._Public, "_container", "IContainer", "IContainer", true, true, null, true));
IMember controlMember = new InstantiatedControlMember(id, type, customInstantiate, additionalProperties, dependencies);
template.AddMember(controlMember);
currentRenderFunction.AddFragment(new InstantiatedControlFragment(id, customInstantiate, numInnerFragments));
currentRenderFunction.AddDependency(controlMember);
return true;
}