SysXamlTypeName BuildSysXamlTypeName(XamlTypeName xty) { string name = xty.Name; if (_Delimeter != (TypeExtensionDelimeter)'`') { name = xty.Name.Replace((char)_Delimeter, '`'); } if (xty.TypeArguments.Count > 0) { var args = new SysXamlTypeName[xty.TypeArguments.Count]; for (int i = 0; i < args.Length; i++) { args[i] = BuildSysXamlTypeName(xty.TypeArguments[i]); } return(new SysXamlTypeName(xty.Namespace, name, args)); } return(new SysXamlTypeName(xty.Namespace, name)); }
public override object ProvideValue(IServiceProvider serviceProvider) { var resolver = serviceProvider.GetService(typeof(IXamlNamespaceResolver)) as IXamlNamespaceResolver; SchCtxt = (serviceProvider.GetService(typeof(IXamlSchemaContextProvider)) as IXamlSchemaContextProvider).SchemaContext; if (resolver != null && SchCtxt != null) { try { var n = XamlTypeName.Parse(_TypeString, _Delimeter, resolver); var sn = BuildSysXamlTypeName(n); return(TypeFromXamlType(sn)); } catch (Exception ex) { #if DEBUG return(ex.GetType()); #else throw ex; #endif } } return(null); }