我开始研究一个新项目,我来自一个直接和'天真'编程。Autofac依赖注入实现
现在我正在关注使用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? 每当我想使用SessionFactory时,是否需要使用
builder.Resolve<ISystemSetting>
作为参数? - 依赖注入模式,或者也许只是Autofac,带有很多新的单词,如Service,Resolve,Singleton等。我从哪里可以从头开始学习这些东西?每个其他DI框架都一样吗?
- 我需要了解IoC容器如何在具有多层的项目中工作,每层都需要对Autofac的引用吗?
谢谢。
什么我不明白你的榜样,是SessionFactory的,因为它也包含了“静态ISessionFactory _sessionFactory;”。所以你在会话工厂中封装一个sessionfactory?在我看来,你想举办一个会议课。 – Egi 2013-05-08 12:24:09