Czy możesz wzmocnić system modułów Prism z poziomu usługi WCF? Ponieważ nie ważne, co robię, moje zależności MEF nie są spełnione.System modułów pryzmatycznych z usługi WCF?
Np
To mój usługa WCF realizacja
public class MyService : IMyServiceContract{
// This should get filled by MEF after Prism loads the required modules
[Import]
IDatabase db;
public MyService(){
var bootsrapper = new MyServiceBoostrapper();
bootsrapper.Run();
}
}
To mój Prism boostrapper z MEF Smak:
public class MyServiceBoostrapper : MefBootstrapper
{
protected override void ConfigureContainer()
{
base.ConfigureContainer();
}
protected override IModuleCatalog CreateModuleCatalog()
{
return new ConfigurationModuleCatalog();
}
protected override void ConfigureAggregateCatalog()
{
base.ConfigureAggregateCatalog();
// TODO: Add this assembly ... don't know why
this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(MyServiceBoostrapper).Assembly));
this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(IDatabase).Assembly));
// This is what provides the service
this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(DatabaseImpl).Assembly));
}
protected override DependencyObject CreateShell()
{
// we don't need the shell
return null;
}
}
Oto moja moduł że zawiera interfejsy do bazy danych serwisu Prism:
[ModuleExport(typeof(IDatabase))]
public class ModuleActivator : IModule
{
public void Initialize()
{
// Do nothing as this module simply provides the API.
}
}
public interface IDatabase
{
// interface methods here ...
}
i wreszcie jest tu Prism usługi bazy danych sama:
[ModuleExport(typeof(DatabaseImpl), DependsOnModuleNames = new string[] { "IDatabase" })]
public class ModuleActivator : IModule
{
public void Initialize()
{
// Do nothing as this is a library module.
}
}
[Export(typeof(IDatabase))]
public class DatabaseImpl : IDatabase
{
/// implementation here ...
}
próbował tego w ciągu ostatnich kilku godzin bez powodzenia. Mój import db
jest zawsze null
i nigdy nie jest inicjowany.
Zauważ, że wszystko działa, jeśli robię to wszystko bez Prism, ale tylko z MEF.
A co z postępami w tej sprawie? –
Myślę, że znalazłem rozwiązanie w książce "Dependency Injection in .NET" (część 3, rozdział 7.3). Wciąż testuję to. Zasadniczo jest to tylko kwestia podpięcia się do rutyny uruchamiania WCF. – drozzy
Tak jak powiedziałem w swoim komentarzu. Naprawdę uważam, że jest to problem z konfigurowaniem kontenera i aktualizowaniem typów ... –