我想注册几个具有通用参数的接口。这是代码示例:
container.Register(
typeof(IDataMerger<OriginalObject, Response<MergeObjectA>>),
typeof(DataMerger<MergeObjectA>));
除了为每个合并对象进行新注册之外,最好的方法是什么?
我尝试使用类似于以下代码的代码,但出现错误。
container.RegisterConditional(
typeof(IDataMerger<,>),
typeof(DataMerger<>).MakeGenericType(typeof(ConsumerObject<,>)
.GetGenericArguments()[1]),
c => c.Consumer?.ImplementationType != null
&& c.Consumer.ImplementationType.GetGenericArguments().Length == 2
&& c.Consumer.ImplementationType
.GetGenericArguments()[0] == typeof(OriginalObject));
我们将不胜感激。
答案 0 :(得分:3)
The documentation显示了演示如何执行此操作的示例。
假设以下定义:
interface IDataMerger<TRequest, TResponse> { }
class DataMerger<T> : IDataMerger<OriginalObject, Response<T>> { }
您可以进行以下注册:
container.Register(typeof(IDataMerger<,>), typeof(DataMerger<>));