MemberResolveResult ResolveProperty(string xmlNamespace, string className, string propertyName, bool allowAttached) { IProjectContent pc = parseInfo.BestCompilationUnit.ProjectContent; IReturnType resolvedType = XamlCompilationUnit.FindType(pc, xmlNamespace, className); if (resolvedType != null && resolvedType.GetUnderlyingClass() != null) { IMember member = resolvedType.GetProperties().Find(delegate(IProperty p) { return(p.Name == propertyName); }); if (member == null) { member = resolvedType.GetEvents().Find(delegate(IEvent p) { return(p.Name == propertyName); }); } if (member == null && allowAttached) { member = resolvedType.GetMethods().Find( delegate(IMethod p) { return(p.IsStatic && p.Parameters.Count == 1 && p.Name == "Get" + propertyName); }); } if (member != null) { return(new MemberResolveResult(callingClass, null, member)); } } return(null); }
MemberResolveResult ResolveProperty(string xmlNamespace, string className, string propertyName, bool allowAttached) { IProjectContent pc = context.ProjectContent; IReturnType resolvedType = XamlCompilationUnit.FindType(pc, xmlNamespace, className); if (resolvedType != null && resolvedType.GetUnderlyingClass() != null) { return(ResolvePropertyName(resolvedType, propertyName, allowAttached)); } return(null); }
ResolveResult ResolveElementName(string exp) { string xmlNamespace; string name; this.resolveExpression = exp; if (resolveExpression.Contains(":")) { string prefix = resolveExpression.Substring(0, resolveExpression.IndexOf(':')); name = resolveExpression.Substring(resolveExpression.IndexOf(':') + 1); if (!context.XmlnsDefinitions.TryGetValue(prefix, out xmlNamespace)) { xmlNamespace = null; } } else { if (!context.XmlnsDefinitions.TryGetValue("", out xmlNamespace)) { xmlNamespace = null; } name = resolveExpression; } if (name.Contains(".")) { string propertyName = name.Substring(name.IndexOf('.') + 1); name = name.Substring(0, name.IndexOf('.')); return(ResolveProperty(xmlNamespace, name, propertyName, true)); } else { IProjectContent pc = context.ProjectContent; IReturnType resolvedType = XamlCompilationUnit.FindType(pc, xmlNamespace, name); IClass resolvedClass = resolvedType != null?resolvedType.GetUnderlyingClass() : null; if (resolvedClass != null) { return(new TypeResolveResult(callingClass, null, resolvedClass)); } else { return(null); } } }
ResolveResult ResolveElementName(XmlReader r) { string xmlNamespace; string name; if (resolveExpression.Contains(":")) { string prefix = resolveExpression.Substring(0, resolveExpression.IndexOf(':')); name = resolveExpression.Substring(resolveExpression.IndexOf(':') + 1); xmlNamespace = r.LookupNamespace(prefix); } else { xmlNamespace = r.LookupNamespace(""); name = resolveExpression; } if (name.Contains(".")) { string propertyName = name.Substring(name.IndexOf('.') + 1); name = name.Substring(0, name.IndexOf('.')); return(ResolveProperty(xmlNamespace, name, propertyName, true)); } else { IProjectContent pc = parseInfo.BestCompilationUnit.ProjectContent; IReturnType resolvedType = XamlCompilationUnit.FindType(pc, xmlNamespace, name); IClass resolvedClass = resolvedType != null?resolvedType.GetUnderlyingClass() : null; if (resolvedClass != null) { return(new TypeResolveResult(callingClass, null, resolvedClass)); } else { return(null); } } }