目前,我的解决方案文件中有以下4个项目:
所有3个Web项目都在使用服务层。 该服务使用Autofac容器注入。
服务在启动期间在每个Web项目中注册,这导致代码重复。有没有更简单的方法可以在一个地方注册所有依赖项,以便所有项目都可以重用它?
非常感谢任何帮助。
答案 0 :(得分:0)
您的服务层应该注册接口实例(针对接口编程)。例如:
// Services.DLL
public interface IMyInterface
{
void DoFoo();
}
internal class MyClass : IMyInterface
{
public void DoFoo()
{
}
}
然后您只需使用Aufofac's Scanning For Modules:
// Services.Dll
public class ServicesRegistrion : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.Register<MyClass>()
.As<IMyInterface>()
.InstancePerLifetimeScope();
}
}
然后在每个项目中:
var assemblies = BuildManager
.GetReferencedAssemblies()
.Cast<Assembly>();
foreach(var assembly in assemblies)
{
builder.RegisterAssemblyModules(assembly);
}
答案 1 :(得分:0)