我听说这应该是可能的,但我无法想象这应该如何工作。
我正在为我的项目使用依赖注入(autofac)。我和别人一起开发一个项目并调用他的类的方法(我使用他的程序集)。
然后我得到一个对象的实例,其他人应该将其用于他的操作。我们希望避免在每个方法上传递此对象实例并使用 autofac。
他可以在不传递任何参数的情况下在他的装配项目中解决这个实例吗?我认为我们至少必须通过 DI-Container……但我听说依赖注入的概念应该使您可以在整个“执行上下文”中解析对象并获得相同的对象。
这是一个使用 asp.net web api 的示例:
这是一个 asp.net webapi 项目的 api 控制器:
public class DocumentsController : ApiController
{
// GET /api/documents
public HttpResponseMessage Get()
{
// Here I call the method of the other developer,
// security/authorization should be handled in
// his method!
// In this context the WebAPI provides the
// IPrincipal of the current user in this
// variable => "HttpContext.Current.User" but we
// don't want to pass it on every method call
ClassFromOtherAssembly.GetDocuments();
HttpResponseMessage response =
Request.CreateResponse<IEnumerable<Document>>(
HttpStatusCode.OK, documents);
return response;
}
}
这是其他开发人员的课程。他应该交付文件并检查用户是否被授权:
public class ClassFromOtherAssembly
{
public List<Documents> GetDocuments()
{
//Security check
IPrincipal principal =
DI_Container.Resolve(IPrincipal);
if(principal.IsInRole("Admin"))
{
//return the list
}
else
{
//return empty list
}
}
}