绑定到泛型类的Ninject约定?

时间:2014-07-02 15:51:09

标签: c# ninject

我有以下类,它被编译成一个名为ExternalTask​​.dll的DLL,并存放在我的文件系统中

public class ExampleJob : IJob 
{

    public void Execute(IJobExecutionContext context)
    {
        Console.WriteLine("ExampleJob is executing. {0}", System.DateTime.Now.ToUniversalTime());
    }
}

我已将dll放在以下目录中:C:\ External

我正在尝试使用ninject来搜索directoru并设置绑定。

如果类在与我的主编码相同的程序集中工作,则以下绑定有效,但我希望将dll分开。

kernel.Bind<IJobSetup>().To<JobSetup<ExampleJob>>();

有没有人知道使用ninject约定设置的正确方法?我目前正在尝试这个,但知道我需要更多 - 我找不到太多合适的文档来帮助。

kernel.Bind(scanner => scanner
                .FromAssembliesInPath(
                    @"C:\External\")
                .SelectAllClasses()
                .BindAllInterfaces());

1 个答案:

答案 0 :(得分:0)

如果您的项目将变得更大,请使用Ninject Conventions:

public class ProjectRepository : IProjectRepository
{
....
}

并将绑定设置为模块:

using Ninject.Extensions.Conventions;

    public class RepositoryModule : NinjectModule
    {
        public override void Load()
        {
            IKernel ninjectKernel = this.Kernel;

            ninjectKernel.Scan(kernel =>
            {
                kernel.FromAssemblyContaining<ProjectRepository>();                
                kernel.BindWithDefaultConventions();
                kernel.AutoLoadModules();
                kernel.InRequestScope();                

            });

       }
    }

然后加载它:

IKernel kernel = new StandardKernel(new RepositoryModule());