123 lines
5.2 KiB
C#
123 lines
5.2 KiB
C#
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<Logger>()
|
|
// .As<ILogger>()
|
|
// .SingleInstance();
|
|
//
|
|
// containerBulder.Register(
|
|
// ctx => NHValidatorConfiguration.Configure())
|
|
// .As<ValidatorEngine>()
|
|
// .SingleInstance();
|
|
//
|
|
// containerBulder.Register(
|
|
// ctx => NHConfiguration.Configure())
|
|
// .As<Configuration>()
|
|
// .SingleInstance();
|
|
//
|
|
// containerBulder.Register(
|
|
// ctx => ctx.Resolve<Configuration>().BuildSessionFactory())
|
|
// .As<ISessionFactory>()
|
|
// .SingleInstance();
|
|
//
|
|
// containerBulder.Register(
|
|
// ctx => ctx.Resolve<ISessionFactory>().OpenSession())
|
|
// .As<ISession>();
|
|
//
|
|
// containerBulder.RegisterType<SessionSource>()
|
|
// .As<ISessionSource>()
|
|
// .SingleInstance();
|
|
//
|
|
// containerBulder.RegisterType<UnitOfWork>()
|
|
// .As<IUnitOfWork>()
|
|
// .InstancePerHttpRequest();
|
|
//
|
|
// containerBulder.RegisterType<CondoRepository>()
|
|
// .As<ICondoRepository>();
|
|
|
|
ObjectFactory.Initialize(
|
|
x =>
|
|
{
|
|
x.ForRequestedType<ILogger>()
|
|
.TheDefaultIsConcreteType<Logger>()
|
|
.AsSingletons();
|
|
|
|
x.ForRequestedType<ValidatorEngine>().AsSingletons()
|
|
.TheDefault.Is.ConstructedBy(ctx => NHValidatorConfiguration.Configure());
|
|
|
|
x.ForRequestedType<Configuration>().AsSingletons()
|
|
.TheDefault.Is.ConstructedBy(ctx => NHConfiguration.Configure());
|
|
|
|
x.ForRequestedType<ISessionFactory>().AsSingletons()
|
|
.TheDefault.Is.ConstructedBy(ctx => ctx.GetInstance<Configuration>().BuildSessionFactory());
|
|
|
|
x.ForRequestedType<ISession>().AsSingletons()
|
|
.TheDefault.Is.ConstructedBy(ctx => ctx.GetInstance<ISessionFactory>().OpenSession());
|
|
|
|
x.ForRequestedType<ISessionSource>()
|
|
.TheDefaultIsConcreteType<SessionSource>()
|
|
.AsSingletons();
|
|
|
|
x.ForRequestedType<IUnitOfWork>()
|
|
.TheDefaultIsConcreteType<UnitOfWork>()
|
|
.CacheBy(InstanceScope.Hybrid);
|
|
|
|
x.ForRequestedType<ICondoRepository>()
|
|
.TheDefaultIsConcreteType<CondoRepository>();
|
|
|
|
x.ForRequestedType<IBoardMemberRepository>()
|
|
.TheDefaultIsConcreteType<BoardMemberRepository>();
|
|
|
|
x.ForRequestedType<IMapper<Taloyhtio.GeneralApi.Common.DTO.Condo, Condo>>()
|
|
.TheDefaultIsConcreteType<Mapper<Taloyhtio.GeneralApi.Common.DTO.Condo, Condo>>();
|
|
|
|
x.ForRequestedType<IMapper<Taloyhtio.GeneralApi.Common.DTO.BoardMember, BoardMember>>()
|
|
.TheDefaultIsConcreteType<Mapper<Taloyhtio.GeneralApi.Common.DTO.BoardMember, BoardMember>>();
|
|
|
|
x.ForRequestedType<IConverter>()
|
|
.TheDefaultIsConcreteType<Converter>();
|
|
|
|
x.ForRequestedType<IEmailService>()
|
|
.TheDefaultIsConcreteType<EmailService>();
|
|
|
|
x.ForRequestedType<ISettingsProvider>()
|
|
.TheDefaultIsConcreteType<SettingsProvider>();
|
|
|
|
x.ForRequestedType<ITemplateEngine>()
|
|
.TheDefaultIsConcreteType<TemplateEngine>();
|
|
|
|
// x.ForRequestedType<IPropertyExtractor>()
|
|
// .TheDefaultIsConcreteType<PropertyExtractor>();
|
|
});
|
|
|
|
var locator = new StructureMapServiceLocator(ObjectFactory.Container);
|
|
ServiceLocator.SetLocatorProvider(() => locator);
|
|
}
|
|
}
|
|
}
|