2012-04-27 7 views
3

내 새로운 프로젝트에 설치해서 Ninject에 노력하고있어 나는 convetions를 사용하여 assembilies를 스캔하고 싶지 그래서협약을 기반으로 Ninject에 바인딩 3.0

IFoo 

자동

IBar 

모든으로 해결됩니다 샘플 및 설명서에서이 접근법을 사용하는 방법을 설명합니다. Ninject 3 커널은 대신 .Load를 사용하십시오. 검색을 위해 Load를 사용하고 있다면 컨벤션으로 스캔을 구성하는 방법은 무엇입니까? https://github.com/ninject/ninject.extensions.conventions/wiki/What-is-configuration-by-convention

을하지만, 지금은 내 모듈을로드 할 수 없습니다 :

편집 나는 그것을 사용하여 작업을 얻을 수 있었다. 아래의 코드를 사용하고 있으며 아래 오류가 나타납니다.

IKernel kernel = new StandardKernel(); 
    kernel.Bind(x => x 
     .FromAssembliesMatching("Crt.*.dll") 
     .SelectAllTypes() 
     .BindAllInterfaces() 
     ); 
    kernel.Load("*.dll"); 
    return kernel; 

오류 :

Ninject.ActivationException was unhandled 
    Message=Error activating ITrainingEngine 
More than one matching bindings are available. 
Activation path: 
    1) Request for ITrainingEngine 

Suggestions: 
    1) Ensure that you have defined a binding for ITrainingEngine only once. 

    Source=Ninject 
    StackTrace: 
     at Ninject.KernelBase.Resolve(IRequest request) in c:\Projects\Ninject\ninject\src\Ninject\KernelBase.cs:line 380 
     at Ninject.ResolutionExtensions.GetResolutionIterator(IResolutionRoot root, Type service, Func`2 constraint, IEnumerable`1 parameters, Boolean isOptional, Boolean isUnique) in c:\Projects\Ninject\ninject\src\Ninject\Syntax\ResolutionExtensions.cs:line 263 
     at Ninject.ResolutionExtensions.Get[T](IResolutionRoot root, IParameter[] parameters) in c:\Projects\Ninject\ninject\src\Ninject\Syntax\ResolutionExtensions.cs:line 37 
     at Crt.BlackBox.Train.Program.Run() in C:\code\Crimson\CRT\readmission\src\Crt.BlackBox\Crt.BlackBox.Train\Program.cs:line 54 
     at Crt.BlackBox.Train.Program.Main(String[] args) in C:\code\Crimson\CRT\readmission\src\Crt.BlackBox\Crt.BlackBox.Train\Program.cs:line 24 
     at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
    InnerException: 

답변

8

사용 SelectAllClasses 대신 SelectAllTypes