using System;
using PBAccount.Service;
using Castle.Core;
using Castle.Windsor;
using Castle.MicroKernel.Registration;
using PBAccount.Repository;
namespace PBAccount.Models
{
public class PBAccountServiceFactory:IPBAccountServiceFactory
{
readonly IWindsorContainer container;
public PBAccountServiceFactory(IWindsorContainer container, LifestyleType lifestyleType, string dbconn)
{
if (container == null) throw new ArgumentNullException("container");
this.container = container;
if (string.IsNullOrEmpty(dbconn))
container.AddComponentLifeStyle<PBAccountEntities1>(lifestyleType);
else
container.Register(
Component.For<PBAccountEntities1>()
.Parameters(Parameter.ForKey(System.Configuration.ConfigurationSettings.AppSettings["connectionStrings"]).Eq(dbconn)).LifeStyle.Is(lifestyleType));
container.AddComponentLifeStyle<IAccountRepository, AccountResposity>(lifestyleType);
container.AddComponentLifeStyle<IAccountTypeRepository, AccountTypeResposity>(lifestyleType);
container.AddComponentLifeStyle<IUserRepository, UserResposity>(lifestyleType);
container.AddComponentLifeStyle<IAccountService, AccountService>(lifestyleType);
container.AddComponentLifeStyle<IAccountTypeService, AccountTypeService>(lifestyleType);
container.AddComponentLifeStyle<IUserService, UserService>(lifestyleType);
container.AddComponentLifeStyle<IEntityFactory, EntityFactory>(lifestyleType);
}
public PBAccountServiceFactory(IWindsorContainer container, string dbconn)
: this(container, LifestyleType.Singleton, dbconn) { }
public PBAccount.Service.IAccountService AccountService
{
get { return container.Resolve<IAccountService>(); }
}
public PBAccount.Service.IAccountTypeService AccountTypeService
{
get { return container.Resolve<IAccountTypeService>(); }
}
public IUserService UserService
{
get { return container.Resolve<IUserService>(); }
}
}
}