using System; using System.Collections.Generic; using System.Linq; using System.Text; using GeneralApi.Core.Common; using GeneralApi.Core.Infrastructure.DataAccess; using GeneralApi.Core.Repositories; using GeneralApi.Core.Repositories.Impl; using GeneralApi.Core.Services; using Microsoft.Practices.ServiceLocation; using NHibernate; using NHibernate.Cfg; using NHibernate.Validator.Engine; using StructureMap; using StructureMap.Attributes; using StructureMap.ServiceLocatorAdapter; using Taloyhtio.GeneralApi.Core.Entities; using Taloyhtio.GeneralApi.Core.Services; using Taloyhtio.GeneralApi.Core.Services.Impl; namespace GeneralApi.Core.Infrastructure.IoC { public class IoCConfiguration { public static void Configure() { // var containerBulder = new ContainerBuilder(); // // containerBulder.RegisterType() // .As() // .SingleInstance(); // // containerBulder.Register( // ctx => NHValidatorConfiguration.Configure()) // .As() // .SingleInstance(); // // containerBulder.Register( // ctx => NHConfiguration.Configure()) // .As() // .SingleInstance(); // // containerBulder.Register( // ctx => ctx.Resolve().BuildSessionFactory()) // .As() // .SingleInstance(); // // containerBulder.Register( // ctx => ctx.Resolve().OpenSession()) // .As(); // // containerBulder.RegisterType() // .As() // .SingleInstance(); // // containerBulder.RegisterType() // .As() // .InstancePerHttpRequest(); // // containerBulder.RegisterType() // .As(); ObjectFactory.Initialize( x => { x.ForRequestedType() .TheDefaultIsConcreteType() .AsSingletons(); x.ForRequestedType().AsSingletons() .TheDefault.Is.ConstructedBy(ctx => NHValidatorConfiguration.Configure()); x.ForRequestedType().AsSingletons() .TheDefault.Is.ConstructedBy(ctx => NHConfiguration.Configure()); x.ForRequestedType().AsSingletons() .TheDefault.Is.ConstructedBy(ctx => ctx.GetInstance().BuildSessionFactory()); x.ForRequestedType().AsSingletons() .TheDefault.Is.ConstructedBy(ctx => ctx.GetInstance().OpenSession()); x.ForRequestedType() .TheDefaultIsConcreteType() .AsSingletons(); x.ForRequestedType() .TheDefaultIsConcreteType() .CacheBy(InstanceScope.Hybrid); x.ForRequestedType() .TheDefaultIsConcreteType(); x.ForRequestedType() .TheDefaultIsConcreteType(); x.ForRequestedType>() .TheDefaultIsConcreteType>(); x.ForRequestedType>() .TheDefaultIsConcreteType>(); x.ForRequestedType() .TheDefaultIsConcreteType(); x.ForRequestedType() .TheDefaultIsConcreteType(); x.ForRequestedType() .TheDefaultIsConcreteType(); x.ForRequestedType() .TheDefaultIsConcreteType(); // x.ForRequestedType() // .TheDefaultIsConcreteType(); }); var locator = new StructureMapServiceLocator(ObjectFactory.Container); ServiceLocator.SetLocatorProvider(() => locator); } } }