Ich bin 8 Stunden in Einheit und habe schon einige Dinge herausgefunden, aber ich finde keinen Winkel damit. Ich habe eine IResourceManager
Unity - verwende aufgelöste Typen als Parameter in anderen aufgelösten Typen
public interface IResourceManager
{
ILogger Logger { get; set; }
string Path { get; set; }
}
und den entsprechenden Typ:
public class ResourceManager : IResourceManager
{
public ResourceManager(ILogger logger, string path)
{
Logger = logger;
Path = path;
}
public ILogger Logger { get; set; }
public string Path { get; set; }
}
Futhermore
public class Logger : ILogger
{ }
und schließlich
public ResourceManagerController(ILogger logger, IResourceManager imageResourceManager)
{}
Ich möchte den Logger und ResourceMa verhalten nager wie Singletons. Ich habe es funktioniert, solange es keinen ILogger in IResourceManager gab, aber ich bekomme immer die Ausnahme "kein Standardkonstruktor".
Bisher habe ich:
public static void Register(HttpConfiguration config)
{
var container = new UnityContainer();
container.RegisterType<ILogger, Logger>("DefaultLogger", new ContainerControlledLifetimeManager());
container.RegisterType<IResourceManager, ResourceManager>("imageResourceManager", new ContainerControlledLifetimeManager(),
new InjectionConstructor(new ResolvedParameter<ILogger>("DefaultLogger"), "basePath"));
config.DependencyResolver = new UnityResolver(container);
// Web API routes ...
}
Wie muss ich meine Art zu registrieren, so dass der Instanziierung ResourceManagerController ist erfolgreich und beide Logger
und ResourceManager
als Singletons verwendet werden?