Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用与父级相同的类型参数统一解析打开的泛型类型_C#_Generics_Dependency Injection_Unity Container - Fatal编程技术网

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
参数。这就是我使用它的目的。。。我想这些东西或多或少是等价的,但切换到非通用并不能真正解决我的问题(我不认为?),因为我将如何解决类型呢?