C# Class NSoft.NFramework.Data.NHibernateEx.NHIoC

NHibernate 용 Entity 정보를 파악해서, INHRepository{TEntity} 를 IoC를 통해 WindsorContainer에 등록한다.
显示文件 Open project: debop/NFramework Class Usage Examples

Public Methods

Method Description
Register ( IKernel kernel, ISessionFactory sessionFactory, Type repositoryType, Predicate isCandidateForRepository ) : void

지정된 ISessionFactory 인스턴스에 등록된 모든 NHibernate용 Entity를 조사해서, 자동으로 Generic Dao (INHRepository{T} 구현 클래스)를 IKernel에 Component로 등록한다. 이렇게 하면, NHRepository{T} 하나만 만들고, 실제 Entity별의 NHRepository는 Castle에 자동으로 등록되고, Instancing될 것이다!!! (예 NHRepository{Blog}, NHRepository{Customer} 등을 Castle Component로 정의하지 않아도, 이 함수에서 자동으로 조사하여, IoC에 등록시켜 준다는 뜻!!!)

Register ( IWindsorContainer windsorContainer, ISessionFactory sessionFactory, Type repositoryType, Predicate isCandidateForRepository ) : void

지정된 ISessionFactory 인스턴스에 등록된 모든 NHibernate용 Entity를 조사해서, 자동으로 Generic Dao (INHRepository{T} 구현 클래스)를 IKernel에 Component로 등록한다. 이렇게 하면, NHRepository{T} 하나만 만들고, 실제 Entity별의 NHRepository는 Castle에 자동으로 등록되고, Instancing될 것이다!!! (예 NHRepository{Blog}, NHRepository{Customer} 등을 Castle Component로 정의하지 않아도, 이 함수에서 자동으로 조사하여, IoC에 등록시켜 준다는 뜻!!!)

ResolveAllInterceptors ( ) : MultipleInterceptor

이제 무조건 여러개의 NHibernate.IInterceptor를 등록할 수 있도록 했음!!! 등록된 것이 없으면 최소한 EntityStateInterceptor라도 등록되도록 했음

ResolveAllInterceptorsInternal ( ) : MultipleInterceptor

이제 무조건 여러개의 NHibernate.IInterceptor를 등록할 수 있도록 했음!!! 등록된 것이 없으면 최소한 EntityStateInterceptor라도 등록되도록 했음

ResolveInterceptor ( ) : NHibernate.IInterceptor

IoC에 등록된 NHibernate.IInterceptor 를 가져온다. 만약 IoC Container 에 등록되어 있지 않다면 EntityStateInterceptor를 등록하고, Resolve를 수행한다.

Private Methods

Method Description
IsImplementsOfGenericNHRepository ( Type repositoryType ) : bool

지정된 Repository의 Type이 INHRepository{T} 인터페이스를 구현한 형식인지 판단한다.

Method Details

Register() public static method

지정된 ISessionFactory 인스턴스에 등록된 모든 NHibernate용 Entity를 조사해서, 자동으로 Generic Dao (INHRepository{T} 구현 클래스)를 IKernel에 Component로 등록한다. 이렇게 하면, NHRepository{T} 하나만 만들고, 실제 Entity별의 NHRepository는 Castle에 자동으로 등록되고, Instancing될 것이다!!! (예 NHRepository{Blog}, NHRepository{Customer} 등을 Castle Component로 정의하지 않아도, 이 함수에서 자동으로 조사하여, IoC에 등록시켜 준다는 뜻!!!)
public static Register ( IKernel kernel, ISessionFactory sessionFactory, Type repositoryType, Predicate isCandidateForRepository ) : void
kernel IKernel Castle.MicroKernel 인스턴스
sessionFactory ISessionFactory NHibernate Session Factory
repositoryType System.Type INHRepository{T} 를 구현한 Concrete Class Type
isCandidateForRepository Predicate NHibernate의 매핑된 Entity 중에 IoC Container에 등록할 Type을 선별하는 Predicator
return void

Register() public static method

지정된 ISessionFactory 인스턴스에 등록된 모든 NHibernate용 Entity를 조사해서, 자동으로 Generic Dao (INHRepository{T} 구현 클래스)를 IKernel에 Component로 등록한다. 이렇게 하면, NHRepository{T} 하나만 만들고, 실제 Entity별의 NHRepository는 Castle에 자동으로 등록되고, Instancing될 것이다!!! (예 NHRepository{Blog}, NHRepository{Customer} 등을 Castle Component로 정의하지 않아도, 이 함수에서 자동으로 조사하여, IoC에 등록시켜 준다는 뜻!!!)
public static Register ( IWindsorContainer windsorContainer, ISessionFactory sessionFactory, Type repositoryType, Predicate isCandidateForRepository ) : void
windsorContainer IWindsorContainer Instance of Castle.Windsor.IWindsorContainer
sessionFactory ISessionFactory Instance of NHibernate.ISessionFactory
repositoryType System.Type INHRepository{T} 를 구현한 Concrete Class Type
isCandidateForRepository Predicate NHibernate의 매핑된 Entity 중에 IoC Container에 등록할 Type을 선별하는 Predicator
return void

ResolveAllInterceptors() public static method

이제 무조건 여러개의 NHibernate.IInterceptor를 등록할 수 있도록 했음!!! 등록된 것이 없으면 최소한 EntityStateInterceptor라도 등록되도록 했음
public static ResolveAllInterceptors ( ) : MultipleInterceptor
return MultipleInterceptor

ResolveAllInterceptorsInternal() public static method

이제 무조건 여러개의 NHibernate.IInterceptor를 등록할 수 있도록 했음!!! 등록된 것이 없으면 최소한 EntityStateInterceptor라도 등록되도록 했음
public static ResolveAllInterceptorsInternal ( ) : MultipleInterceptor
return MultipleInterceptor

ResolveInterceptor() public static method

IoC에 등록된 NHibernate.IInterceptor 를 가져온다. 만약 IoC Container 에 등록되어 있지 않다면 EntityStateInterceptor를 등록하고, Resolve를 수행한다.
public static ResolveInterceptor ( ) : NHibernate.IInterceptor
return NHibernate.IInterceptor