0

我想注册几个具有通用参数的接口。这是代码示例:

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));

您可以提供的任何帮助将不胜感激。

4

1 回答 1

3

该文档显示了说明如何执行此操作的示例。

假设以下定义:

interface IDataMerger<TRequest, TResponse> { }

class DataMerger<T> : IDataMerger<OriginalObject, Response<T>> { }

您可以进行以下注册:

container.Register(typeof(IDataMerger<,>), typeof(DataMerger<>));
于 2019-07-02T19:59:46.610 回答