private NotNullType TypeFromName(IXamlTypeResolver xamlTypeResolver, string name) { string AssemblyQualifiedName = Contract.NullSupressed(xamlTypeResolver.Resolve(name).AssemblyQualifiedName); NotNullType Result = NotNullType.GetType(AssemblyQualifiedName); return(Result); }
/// <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); }