StartTagInfo GetStartTagInfo ()
{
string name = r.LocalName;
string ns = r.NamespaceURI;
string typeArgNames = null;
var members = new List<Pair> ();
var atts = ProcessAttributes (r, members);
// check TypeArguments to resolve Type, and remove them from the list. They don't appear as a node.
var l = new List<Pair> ();
foreach (var p in members) {
if (p.Key == XamlLanguage.TypeArguments) {
typeArgNames = p.Value;
l.Add (p);
break;
}
}
foreach (var p in l)
members.Remove (p);
XamlType xt;
IList<XamlTypeName> typeArgs = typeArgNames == null ? null : XamlTypeName.ParseList (typeArgNames, xaml_namespace_resolver);
var xtn = new XamlTypeName (ns, name, typeArgs);
return new StartTagInfo () { Name = name, Namespace = ns, TypeName = xtn, Members = members, Attributes = atts};
}