我开始从事一个新项目,我来自一个直接和“幼稚”的编程。
现在我关心的是使用 IoC 容器,特别是使用 Autofac 的依赖注入模式。
假设我有一个简单的会话工厂:
namespace Warehouse.Data
{
public class SessionFactory
{
private static ISessionFactory _sessionFactory;
private static ISystemSetting _systemSetting;
SessionFactory(ISystemSetting systemSetting)
{
_systemSetting = systemSetting;
InitializeSessionFactory();
}
private static void InitializeSessionFactory()
{
_sessionFactory = Fluently.Configure()
.Database(DatabaseConfiguration)
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<MyMap>())
.BuildSessionFactory();
}
public static ISession OpenSession()
{
return _sessionFactory.OpenSession();
}
}
}
在 Bootstrap.cs 中,我像这样配置 autofac:
namespace Warehouse.Infrastructure
{
using Autofac;
public class Bootstrap
{
public IContainer Configure()
{
var builder = new ContainerBuilder();
builder.RegisterType<SystemSetting>().As<ISystemSetting>();
builder.RegisterType<UserRepository>().As<IUserRepository>();
return builder.Build();
}
}
}
我的问题是这样的:
- 如何使用 Autofac 解决 SessionFactory 对 ISystemSetting 的依赖?
builder.Resolve<ISystemSetting>
每次我想使用 SessionFactory 时都需要用作参数吗? - 依赖注入模式,或者可能只是 Autofac,带有许多新词,例如 Service、Resolve、Singleton 等。我在哪里可以从头开始学习这些东西?其他所有 DI 框架都一样吗?
- 我需要了解 IoC 容器如何在具有多个层的项目中工作,每个层都需要引用 Autofac 吗?
谢谢你。