public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { string stringValue = value as string; if (stringValue != null) { AssemblyReference result = new AssemblyReference { AssemblyName = new AssemblyName(stringValue) }; XamlSchemaContext schemaContext = GetSchemaContext(context); if (schemaContext != null && schemaContext.ReferenceAssemblies != null && schemaContext.ReferenceAssemblies.Count > 0) { Assembly assembly = ResolveAssembly(result.AssemblyName, schemaContext.ReferenceAssemblies); if (assembly != null) { result.Assembly = assembly; } else { // SchemaContext.ReferenceAssemblies is an exclusive list. // Disallow referencing assemblies that are not included in the list. result = null; } } return result; } return base.ConvertFrom(context, culture, value); }
internal static void ConvertToTextExpressionImports(VisualBasicSettings settings, out IList<string> importedNamespace, out IList<AssemblyReference> references) { importedNamespace = new Collection<string>(); List<string> assemblyNames = new List<string>(); foreach (VisualBasicImportReference visualbasicImport in settings.ImportReferences) { if (!BlackListedAssemblies.Contains(visualbasicImport.Assembly)) { if (importedNamespace.IndexOf(visualbasicImport.Import) == -1) { importedNamespace.Add(visualbasicImport.Import); } string displayName = visualbasicImport.Assembly.Split(',')[0]; if (assemblyNames.IndexOf(displayName) == -1) { assemblyNames.Add(displayName); } } } references = new Collection<AssemblyReference>(); foreach (string assemblyName in assemblyNames) { AssemblyReference reference = new AssemblyReference { AssemblyName = new AssemblyName(assemblyName) }; references.Add(reference); } }