我有一个 autofac 注册的情况,其中服务相互关联。这是我现在拥有的:
var builder = new ContainerBuilder();
const string A = "A";
const string B = "B";
//Part 1
builder.RegisterType<ClassA1>().Named<IClass1>(A);
builder.RegisterType<ClassA2>().Named<IClass2>(A);
builder.RegisterType<ClassB1>().Named<IClass1>(B);
builder.RegisterType<ClassB2>().Named<IClass2>(B);
//Part 2
builder.Register(c => new ClassProcess(A, c.ResolveNamed<IClass1>(A), c.ResolveNamed<IClass2>(A))).Named<ClassProcess>(A).SingleInstance();
builder.Register(c => new ClassProcess(B, c.ResolveNamed<IClass1>(B), c.ResolveNamed<IClass2>(B))).Named<ClassProcess>(B).SingleInstance();
//Part 3
builder.Register(c => new ClassProcessDependency(c.ResolveNamed<ClassProcess>(B), c.ResolveNamed<ClassProcess>(A)));
在第 1 部分中,我定义了两个成对连接的基本类,IClass1 和 IClass2。
在第 2 部分中,我定义了一个连接这两个类的“过程”。这个过程实际上是传递给程序其余部分的,它需要一个 IEnumerable。
在第 3 部分中,我定义了这些进程之间存在的任何依赖关系,以便它们以正确的顺序执行。
我在这里寻找的是 Autofac 中的一些注册方法,它可以使用以前使用 name/key/meta 注册的服务,并使用该数据注册新服务。
编辑:请注意,我正在尝试找出是否有任何 Autofac 特定的方法来执行此操作。