Exemple #1
0
        private NotNullType TypeFromName(IXamlTypeResolver xamlTypeResolver, string name)
        {
            string      AssemblyQualifiedName = Contract.NullSupressed(xamlTypeResolver.Resolve(name).AssemblyQualifiedName);
            NotNullType Result = NotNullType.GetType(AssemblyQualifiedName);

            return(Result);
        }
Exemple #2
0
        /// <summary>
        /// Returns an object that is provided as the value of the target property for this markup extension.
        /// </summary>
        /// <param name="serviceProvider">A service provider helper that can provide services for the markup extension.</param>
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            Contract.RequireNotNull(serviceProvider, out IServiceProvider ServiceProvider);

            IXamlTypeResolver XamlTypeResolver = (IXamlTypeResolver)ServiceProvider.GetService(typeof(IXamlTypeResolver));

            NotNullType Type;

            if (Arg1.Length == 0)
            {
                Type = TypeFromName(XamlTypeResolver, TypeName);
            }
            else
            {
                NotNullType GenericDefinitionType = TypeFromName(XamlTypeResolver, TypeName);

                NotNullAssembly GenericDefinitionAssembly = GenericDefinitionType.Assembly;
                GenericDefinitionType = GenericDefinitionAssembly.GetType(ToFullNameWithArguments(GenericDefinitionType.Name, 1)) !;

                NotNullType[] GenericArguments = new NotNullType[] { TypeFromName(XamlTypeResolver, Arg1) };
                Type = GenericDefinitionType.MakeGenericType(GenericArguments);
            }

            return(Type);
        }