Autofac l'injection de dépendance de la mise en œuvre

J'ai commencé à travailler sur un nouveau projet et je viens d'une directe et "naïve" de la programmation.

Droit maintenant, je suis sujet à propos de l'utilisation conteneur IoC, en particulier sur l'Injection de Dépendance formulation à l'aide de Autofac.

Disons que j'ai une session d'usine :

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();
        }
    }
}

Et dans le Bootstrap.cs, j'ai configurer autofac comme ceci :

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();
        }
    }
}

Ma question est: est-ce

  1. Comment puis-je utiliser Autofac pour résoudre SessionFactory dépendance à ISystemSetting?
    Dois-je utiliser builder.Resolve<ISystemSetting> en tant que paramètre à chaque fois que je veux utiliser SessionFactory?
  2. L'Injection de dépendance motif, ou peut-être juste Autofac, est livré avec de nombreuses nouvelles word tels que le Service, Résoudre, Singleton, etc. Où puis-je apprendre ces choses à partir de zéro? Est-il le même pour tous les autres DI-Cadre?
  3. J'ai besoin de comprendre comment le Conteneur IoC travaille dans un projet avec plusieurs couche, faire chaque couche a besoin d'une référence à l'Autofac?

Merci.

ce que je ne comprends pas dans votre exemple, votre sessionfactory, car il contient également un "statique ISessionFactory _sessionFactory;". si vous encapsuler une sessionfactory dans une session d'usine? il me semble que vous voulez faire une séance de classe.

OriginalL'auteur Samuel Adam | 2013-04-26