我有以下类,它被编译成一个名为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());
答案 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());