internal TypeTemplateTypeReference (SimpleTypeReference template, int position) { if (template == null) throw new ArgumentNullException("template"); if (position < 0) throw new ArgumentOutOfRangeException("position"); this.template = template; this.position = position; }
private string GetTypeTemplateName (SimpleTypeReference type, int position) { TypeTarget target = type.Resolve(targets) as TypeTarget; if (target != null) { string[] templates = target.Templates; if (templates.Length > position) { return (templates[position]); } else if (target.OuterType != null) { return (GetTypeTemplateName(target.OuterType, position)); } else { return ("UTT"); } } else { throw new InvalidOperationException(String.Format("Unknown type reference '{0}'", type.Id)); } }
internal Specialization (SimpleTypeReference template, TypeReference[] arguments) { if (template == null) throw new ArgumentNullException("template"); if (arguments == null) throw new ArgumentNullException("arguments"); this.template = template; this.arguments = arguments; }
private void WriteSimpleType (SimpleTypeReference simple, DisplayOptions options, bool showOuterType, XmlWriter writer) { TypeTarget type = simple.Resolve(targets) as TypeTarget; if (type != null) { WriteTypeTarget(type, options, showOuterType, writer); } else { TextReferenceUtilities.WriteSimpleTypeReference(simple, options, writer); } }
public void WriteSimpleType (SimpleTypeReference simple, DisplayOptions options, XmlWriter writer) { WriteSimpleType(simple, options, true, writer); }
internal static void WriteSimpleTypeReference (SimpleTypeReference type, DisplayOptions options, XmlWriter writer) { // this logic won't correctly deal with nested types, but type cer strings simply don't include that // infomation, so this is out best guess under the assumption of a non-nested type string cer = type.Id; // get the name string name; int lastDotPosition = cer.LastIndexOf('.'); if (lastDotPosition > 0) { // usually, the name will start after the last dot name = cer.Substring(lastDotPosition + 1); } else { // but if there is no dot, this is a type in the default namespace and the name is everything after the colon name = cer.Substring(2); } // remove any generic tics from the name int tickPosition = name.IndexOf('`'); if (tickPosition > 0) name = name.Substring(0, tickPosition); if ((options & DisplayOptions.ShowContainer) > 0) { // work out namespace } writer.WriteString(name); if ((options & DisplayOptions.ShowTemplates) > 0) { // work out templates } }
public static void SetGenericContext (string cer) { //Console.WriteLine("context = {0}", cer); // re-set the context genericTypeContext = null; genericMemberContext = null; // get the new context Reference context = CreateReference(cer); if (context == null) return; // if it is a type context, set it to be the type context SimpleTypeReference typeContext = context as SimpleTypeReference; if (typeContext != null) { genericTypeContext = typeContext; return; } // if it is a member context, set it to be the member context and use it to obtain a type context, too SimpleMemberReference memberContext = context as SimpleMemberReference; if (memberContext != null) { genericMemberContext = memberContext; string typeId, memberName, arguments; DecomposeMemberIdentifier(memberContext.Id, out typeId, out memberName, out arguments); genericTypeContext = CreateSimpleTypeReference(typeId); return; } }
public static SimpleTypeReference CreateSimpleTypeReference (XPathNavigator node) { if (node == null) throw new ArgumentNullException("node"); string api = node.GetAttribute("api", String.Empty); SimpleTypeReference reference = new SimpleTypeReference(api); return(reference); }