introduced extensions infrastructure.

This commit is contained in:
morkt
2016-08-02 16:38:42 +04:00
parent df901a3670
commit 0732a9cf45
2 changed files with 106 additions and 59 deletions

View File

@@ -85,20 +85,31 @@ namespace GameRes
catalog.Catalogs.Add (new DirectoryCatalog (Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly().Location), "Arc*.dll"));
//Create the CompositionContainer with the parts in the catalog
var container = new CompositionContainer (catalog);
//Fill the imports of this object
container.ComposeParts (this);
AddResourceImpl (m_image_formats);
AddResourceImpl (m_arc_formats);
AddResourceImpl (m_audio_formats);
AddResourceImpl (m_script_formats);
using (var container = new CompositionContainer (catalog))
{
//Fill the imports of this object
container.ComposeParts (this);
AddResourceImpl (m_image_formats, container);
AddResourceImpl (m_arc_formats, container);
AddResourceImpl (m_audio_formats, container);
AddResourceImpl (m_script_formats, container);
}
}
private void AddResourceImpl (IEnumerable<IResource> formats)
private void AddResourceImpl (IEnumerable<IResource> formats, CompositionContainer container)
{
foreach (var impl in formats)
{
try
{
var part = AttributedModelServices.CreatePart (impl);
if (part.ImportDefinitions.Any())
container.SatisfyImportsOnce (part);
}
catch (Exception X)
{
System.Diagnostics.Trace.WriteLine (X.Message, impl.Tag);
}
foreach (var ext in impl.Extensions)
{
m_extension_map.Add (ext.ToUpperInvariant(), impl);