コード例 #1
0
        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));
        }
コード例 #2
0
        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);
        }