root/UnityWeb/UnityWeb/Modules/Modules/StructureMapRegistery.cs

User picture

Author: marisic.net

Revision: 112 («Previous)


File Size: 1.74 KB

(February 02, 2009 07:47 UTC) Over 3 years ago


  

 
Show/hide line numbers
#region Using Statements

using Modules.Common;
using Modules.EmployeeManagement;
using Repository.NHibernateDataAccess;
using Repository.NHibernateDataAccess.Conversation;
using Repository.NHibernateDataAccess.Providers;
using Repository.NHibernateDataAccess.Providers.Interfaces;
using StructureMap.Attributes;
using StructureMap.Configuration.DSL;

#endregion

namespace Modules
{
    public sealed class StructureMapRegistery : Registry
    {
        public StructureMapRegistery()
        {
            // presenters / controllers / data providers are per request
            // hybrid uses httpcontext if available otherwise thread local storage
            ForRequestedType<IEmployeeController>().TheDefaultIsConcreteType<EmployeeController>().CacheBy(InstanceScope.Hybrid);
            ForRequestedType<IEmployeeDataProvider>().TheDefaultIsConcreteType<EmployeeDataProvider>().CacheBy(InstanceScope.Hybrid);

            ForRequestedType<IProductDataProvider>().TheDefaultIsConcreteType<ProductDataProvider>().CacheBy(InstanceScope.Hybrid);
            ForRequestedType<ICustomerDataProvider>().TheDefaultIsConcreteType<CustomerDataProvider>().CacheBy(InstanceScope.Hybrid);

            //Business Conversation is per session
            ForRequestedType<IConversation>().TheDefaultIsConcreteType<Conversation>().CacheBy(InstanceScope.HttpSession);

            //Session Factory is life time
            ForRequestedType<INHibernateSessionManager>().TheDefaultIsConcreteType<NHibernateSessionManager>().CacheBy(InstanceScope.Singleton);

            Scan(x =>
                     {
                         x.TheCallingAssembly();
                         x.With<PresenterScanner>();
                     });
        }
    }
}