Пример #1
0
 protected ImporterInfoBase(string typeName, ContentImporterAttribute attribute)
 {
     TypeName = typeName;
     CacheImportedData = attribute.CacheImportedData;
     DefaultProcessor = attribute.DefaultProcessor;
     DisplayName = attribute.DisplayName;
     fileExtensions.AddRange(attribute.FileExtensions);
 }
 public AssemblyReferenceImporterInfo(string typeName, ContentImporterAttribute attribute, IAssemblyReference assemblyReference)
     : base(typeName, attribute)
 {
     AssemblyReference = assemblyReference;
 }
Пример #3
0
        private void ResolveAssemblies()
        {
            _importers = new List<ImporterInfo>();
            _processors = new List<ProcessorInfo>();
            _writers = new List<Type>();

            // Finally load the pipeline assemblies.
            foreach (var assemblyPath in Assemblies)
            {
                Type[] exportedTypes;
                try
                {
                    Assembly a;
                    if (string.IsNullOrEmpty(assemblyPath))
                    {
                        // Get the types from this assembly, which includes all of the
                        // built-in importers, processors and type writers
                        a = Assembly.GetExecutingAssembly();
                        // The built-in types may not be public, so get all types
                        exportedTypes = a.GetTypes();
                    }
                    else
                    {
                        a = Assembly.LoadFrom(assemblyPath);
                        // We only look at public types for external importers, processors
                        // and type writers.
                        exportedTypes = a.GetExportedTypes();
                    }
                }
                catch (Exception)
                {
                    // The assembly failed to load... nothing
                    // we can do but ignore it.
                    continue;
                }

                foreach (var t in exportedTypes)
                {
                    if (!t.IsPublic || t.IsAbstract) 
                        continue;

                    if (t.GetInterface(@"IContentImporter") != null)
                    {
                        var attributes = t.GetCustomAttributes(typeof (ContentImporterAttribute), false);
                        if (attributes.Length != 0)
                        {
                            var importerAttribute = attributes[0] as ContentImporterAttribute;
                            _importers.Add(new ImporterInfo { attribue = importerAttribute, type = t });
                        }
                        else
                        {
                            // If no attribute specify default one
                            var importerAttribute = new ContentImporterAttribute(".*");
                            importerAttribute.DefaultProcessor = "";
                            importerAttribute.DisplayName = t.Name;
                            _importers.Add(new ImporterInfo { attribue = importerAttribute, type = t });
                        }
                    }
                    else if (t.GetInterface(@"IContentProcessor") != null)
                    {
                        var attributes = t.GetCustomAttributes(typeof (ContentProcessorAttribute), false);
                        if (attributes.Length != 0)
                        {
                            var processorAttribute = attributes[0] as ContentProcessorAttribute;
                            _processors.Add(new ProcessorInfo {attribue = processorAttribute, type = t});
                        }
                    }
                    else if (t.GetInterface(@"ContentTypeWriter") != null)
                    {
						// TODO: This doesn't work... how do i find these?
                        _writers.Add(t);
                    }
                }
            }
        }
 public AssemblyImporterInfo(string typeName, ContentImporterAttribute attribute, Assembly assembly)
     : base(typeName, attribute)
 {
     Assembly = assembly;
 }