C# 将(初始化)参数注入构造函数-Autofac
是否有任何方法将参数注入构造函数,该参数当前是在basecontroller上的Initialize方法中创建的 示例代码:C# 将(初始化)参数注入构造函数-Autofac,c#,asp.net-mvc,inversion-of-control,autofac,C#,Asp.net Mvc,Inversion Of Control,Autofac,是否有任何方法将参数注入构造函数,该参数当前是在basecontroller上的Initialize方法中创建的 示例代码: public class SSBaseController : Controller { protected UserProfileClass UserProfile; protected override void Initialize(System.Web.Routing.RequestContext requestConte
public class SSBaseController : Controller
{
protected UserProfileClass UserProfile;
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
UserProfile = UserProfileGetter.getProfileFromDB();
}
}
public class SSController:SSBaseController
{
private IProcessService processService;
public SSController(IProcessService _processService)
{
processService = _processService;
}
}
public interface IProcessService
{
void doStuff();
}
public class ProcessService1 : IProcessService
{
private UserProfileClass upc;
private string _name;
public ProcessService1(UserProfileClass _profileClass)
{
upc = _profileClass;
}
public void doStuff()
{
_name = upc.name;
upc.name = "xxx";
}
}
public class UserProfileGetter
{
public static UserProfileClass getProfileFromDB()
{
return null;
}
}
public class UserProfileClass
{
public string name;
}
我还想去掉初始化,这可能吗?
如何使用该参数注册ProcessService而不在SSController中为空?可以集成ASP.NET MVC和Autofaq。然后只需注册接口实现并指定控制器的构造函数参数。框架将完成所有其他工作。 看见
这里还有一篇文章:是的,我可以轻松地完成注册和填充,只是当它从初始化的控制器获取参数时,就变得不容易理解了。我在某个地方读过关于激活的书?我不明白你的评论。看起来您可以将类似于IUserProfileGetter的内容传递给控制器的构造函数,并使用一个属性UserProfile,如果该属性不为null,它将返回_UserProfile,或者在第一次调用时在IUserProfileGetter的帮助下创建它。