1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 |
#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>();
});
}
}
} |