C# 在类链中注册类型

C# 在类链中注册类型,c#,autofac,C#,Autofac,假设我们有以下继承树: Base<Generic> : Base : IBase Base:Base:IBase 并且有两种实现方式: A) Class1Operation : Base<Generic> Class2Operation : Base<Generic> B) Class3Operation : Base Class4Operation : Base A)操作:基本 Class2操作:基本操作 B) 类别3操作:基本操作 类别

假设我们有以下继承树:

Base<Generic> : Base : IBase
Base:Base:IBase
并且有两种实现方式:

A) Class1Operation : Base<Generic>
   Class2Operation : Base<Generic>

B) Class3Operation : Base
   Class4Operation : Base
A)操作:基本
Class2操作:基本操作
B) 类别3操作:基本操作
类别4操作:基本操作
对于A点,我有如下内容:

builder.RegisterAssemblyTypes(assembly)
        .Where(t => t.Name.EndsWith("Operation"))
        .AsClosedTypesOf(typeof(Base<>))
        .InstancePerLifetimeScope();
builder.RegisterAssemblyTypes(程序集)
.Where(t=>t.Name.EndsWith(“操作”))
.AsClosedTypesOf(基本类型))
.InstancePerLifetimeScope();
如何注册B点的类型,以便通过接口IBase解析所有类型(A和B)

编辑

通过添加下一个registerAssemblyTypes方法,我成功地做到了这一点:

builder.RegisterAssemblyTypes(persistenceAssembly)
        .Where(t => t.Name.EndsWith("Operation"))
        .AssignableTo<Base>()
        .AsImplementedInterfaces()
        .InstancePerLifetimeScope();
builder.RegisterAssemblyTypes(persistenceAssembly)
.Where(t=>t.Name.EndsWith(“操作”))
.可转让给
.AsImplementedInterfaces()
.InstancePerLifetimeScope();

而且。。。似乎解决了两个示例中的引用。

解决了我的问题:

builder.RegisterAssemblyTypes(persistenceAssembly)
        .Where(t => t.Name.EndsWith("Operation"))
        .AssignableTo<Base>()
        .AsImplementedInterfaces()
        .InstancePerLifetimeScope();
builder.RegisterAssemblyTypes(persistenceAssembly)
.Where(t=>t.Name.EndsWith(“操作”))
.可转让给
.AsImplementedInterfaces()
.InstancePerLifetimeScope();

您希望autofac如何仅基于注入依赖项的
IBase
类型注入不同(派生)类?请看编辑的帖子这是一个有用的问题和答案。如果您编辑标题以更清楚地反映您正在尝试做的事情,以便下一个需要它的人能够找到它,那就更好了。@ScottHannen您能提出一个标题吗,我现在没有任何想法。。