我是依赖注入模式的新手。我对几件事有些困惑。
我有一个名为“ MailCore”的类库项目。该项目具有执行所有电子邮件发送内容的接口和类。我有一个名为“站点”的MVC项目。它使用“ MailCore”项目发送电子邮件。我在这个项目中有Unity,并且UnityContainer已注册,并且一切正常。
我还有另一个名为“ SiteRepo”的类库库项目。有时,要执行某些特定任务,我必须从该项目发送电子邮件。因此,该项目中也引用了“ MailCore”项目。
我已经在'SiteRepo'项目中从NuGet安装了Unity,并且在该类库项目中似乎没有创建任何UnityConfig。我如何在这里注册UnityContainer?
网站:
Public class JobController : Controller
{
private readonly IEmailBuilder mailBuilder;
public JobController(IEmailBuilder mailBuilder)
{
this.mailBuilder = mailBuilder;
}
public ActionResult Create(....)
{
JobRepo j = new JobRepo();
j.Create(....);
}
}
UnityConfig(位于Web应用程序“站点”中):
public static class UnityConfig
{
public static void RegisterComponents()
{
var container = new UnityContainer();
// register all your components with the container here
// it is NOT necessary to register your controllers
// e.g. container.RegisterType<ITestService, TestService>();
container.RegisterType<IEmailBuilder, EmailBuilder>();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}
}
SiteRepo:
Public class JobRepo()
{
Public bool Create(...)
{
//some other code to create a job....
//have to send email using MailCore !! The problem area in concern..
}
}
如果必须使用像Unity这样的DI容器(而不是Pure DI),则应将其安装到您的Composition Root,即“站点”。
从那里,您可以引用库项目并配置容器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句