我有一个创建 pdf 所需的服务类,它需要注入 ControllerContext 才能呈现html => pdf
. 此服务通过中间层调用,该中间层不引用 web/mvc 项目。这很好,因为 ninject 完成了所有需要的服务注入等。这就是服务的样子(为了这些目的而简化)
public class PdfCreatorService : AbstractUrlBasedPdfCreatorService
{
[Inject]
public ControllerContext ControllerContext { get; set; }
public override byte[] CreateReport(int reportId)
{
var result = new PdfController().CreateReport(reportId);
using (var it = new ResponseCapture(ControllerContext.RequestContext))
{
result.ExecuteResult(ControllerContext);
return it.ReadAllContents();
}
}
}
这是简化的调用堆栈:
Web.HomeController.SendEmailWithPdf(int id) 调用:
MiddleTier.BusinessLogic.SendEmailWithPdf(int id) 调用:
Web.Services.PdfCreatorService.CreateReport(int id)
Ninject 正在到达 PdfCreatorService,没问题,但是:我需要以某种方式将 ControllerContext 从 HomeController(通过中间层)转发到 PdfCreatorService。而中间层不能有任何对 ControllerContext 的引用。
我查看了提供者、工厂、解析器等,但找不到合适的解决方案。
任何帮助表示赞赏!干杯