如何简化同一开放泛型实现的大量封闭泛型版本的注册?

3
有没有一种流畅的方式来编写以下内容:
var someTypes = GetType()
    .Assembly
    .GetTypes()
    .Where(x => someFilter == true);

foreach(var someType in someTypes)
{
    var genericInterface = typeof(IFoo<>).MakeGenericType(someType);

    var genericImplementation = typeof(Foo<>).MakeGenericType(someType);

    container.Register(
       Component.For(genericInterface)
            .ImplementedBy(genericImplementation));
}
2个回答

3

你需要的是一个 IGenericServiceStrategy(除了 @maxlego 提到的,这是正确的)

请参阅此处以获取详细信息和示例。


2
以下应该这样做:
container.Register(
    Component.For(typeof(IFoo<>))
      .ImplementedBy(typeof(Foo<>))
);

1
谢谢,但是我对 Foo<> 类型不感兴趣,我正在注册从 MakeGenericType 方法返回的类型。 - David Perlman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接