C# 使用与父级相同的类型参数统一解析打开的泛型类型
我有一个抽象的泛型类C# 使用与父级相同的类型参数统一解析打开的泛型类型,c#,generics,dependency-injection,unity-container,C#,Generics,Dependency Injection,Unity Container,我有一个抽象的泛型类LogWriter。我有一个名为MultiClientLogWriter的实现,它包装了多个LogWriter实例并写入所有实例。我想让一个MutliClientLogWriter包装几个不同类型的编写器成为默认值。我有这段代码,但它不起作用,因为(当然)您无法解析打开的泛型类型: unityContainer.RegisterType(typeof (LogWriter<>), typeof (TraceLogWriter<>), "trace",
LogWriter
。我有一个名为MultiClientLogWriter
的实现,它包装了多个LogWriter
实例并写入所有实例。我想让一个MutliClientLogWriter包装几个不同类型的编写器成为默认值。我有这段代码,但它不起作用,因为(当然)您无法解析打开的泛型类型:
unityContainer.RegisterType(typeof (LogWriter<>), typeof (TraceLogWriter<>), "trace", new PerRequestLifetimeManager(),
new InjectionConstructor(Severity.Debug));
unityContainer.RegisterType(typeof (LogWriter<>), typeof (LogSinkWriter<>), "sink",
new PerRequestLifetimeManager(), new InjectionConstructor(Severity.Debug, logSink));
unityContainer.RegisterType(typeof (LogWriter<>), typeof (MultiClientLogWriter<>),
new PerRequestLifetimeManager(),
new InjectionConstructor(unityContainer.Resolve(typeof (LogWriter<>), "sink"),
unityContainer.Resolve(typeof (LogWriter<>), "trace")));
unityContainer.RegisterType(typeof(LogWriter),typeof(TraceLogWriter),“trace”,新的PerRequestLifetimeManager(),
新的注入构造函数(Severity.Debug));
unityContainer.RegisterType(日志写入程序的类型)、日志写入程序的类型、“接收器”,
新的PerRequestLifetimeManager(),新的注入构造函数(Severity.Debug,logSink));
unityContainer.RegisterType(typeof(LogWriter),typeof(MultiClient LogWriter),
新建PerRequestLifetimeManager(),
新的注入构造函数(unityContainer.Resolve(typeof(LogWriter),“sink”),
unityContainer.Resolve(类型(日志书写器),“跟踪”);
但是,我希望这一点能够继续下去(也就是说,如果请求使用
多客户端LogWriter
,我希望使用LogSinkWriter
等等),因此您可能会认为有某种方法可以实现这一点。顺便提一下,为什么您的日志编写器需要通用?他们从中得到了什么?大多数日志库只使用它们正在执行日志记录的类型的Type
参数。这就是我使用它的目的。。。我想这些东西或多或少是等价的,但切换到非通用并不能真正解决我的问题(我不认为?),因为我将如何解决类型呢?