2010-12-19 10 views
0

müssen Projekt von caliburn.micro in normale Kalibrierung konvertieren. Ich habe ein Problem mit der Bootstrap-Klasse.Problem beim Konvertieren von Projekt von Caliburn.Micro in "normal" Caliburn

ich caliburn.micro wie folgt aussehen:

public class MefBootStrapper : BootStraper<IShellViewModel> 
{ 
#region Fields 
private CompositionContainer _container; 
#endregion 

#region Overrides 
protected override void Configure() 
{ // configure container 
#if SILVERLIGHT 
    _container = CompositionHost.Initialize(
    new AggregateCatalog(AssemblySource.Instance.Select(x => new AssemblyCatalog(x)).OfType<ComposablePartCatalog>())); 
#else 

    var catalog = 
     new AggregateCatalog(
      AssemblySource.Instance.Select(x => new AssemblyCatalog(x)).OfType<ComposablePartCatalog>()); 

    //add external DLL 
    catalog.Catalogs.Add(
     new AssemblyCatalog(string.Format(
      CultureInfo.InvariantCulture, "{0}{1}", System.IO.Directory.GetCurrentDirectory(), @"\Pokec_Toolkit.dll"))); 

    _container = new CompositionContainer(catalog); 
#endif 

    var batch = new CompositionBatch(); 

    batch.AddExportedValue<IWindowManager>(new WindowManager()); 
    batch.AddExportedValue<IEventAggregator>(new EventAggregator()); 
    batch.AddExportedValue(_container); 

    _container.Compose(batch); 
} 

protected override object GetInstance(Type serviceType, string key) 
{ 
    string contract = string.IsNullOrEmpty(key) ? AttributedModelServices.GetContractName(serviceType) : key; 
    var exports = _container.GetExportedValues<object>(contract); 

    if (exports.Count() > 0) 
    return exports.First(); 

    throw new Exception(string.Format("Could not locate any instances of contract {0}.", contract)); 
} 

protected override IEnumerable<object> GetAllInstances(Type serviceType) 
{ 
    return _container.GetExportedValues<object>(AttributedModelServices.GetContractName(serviceType)); 
} 

protected override void BuildUp(object instance) 
{ 
    _container.SatisfyImportsOnce(instance); 
} 

protected override IEnumerable<System.Reflection.Assembly> SelectAssemblies() 
{ 
    return base.SelectAssemblies(); 
} 
#endregion 
} 

I MEF verwenden bei der Injektion.

Problem ist in Caliburn nicht vorhanden BooStraper-Klasse. Wie kann ich das lösen?

Ich brauche Lasttypen von externer Montage.

Vielen Dank für Ihre Hilfe

Antwort

0

Verwenden Sie den neuesten Quellcode? Bootstrapper wurde vor kurzem zurück nach Caliburn portiert.

Verwandte Themen