0
是否有任何方法向构造函数注入参数,该参数当前是否在基础控制器上的Initialize方法中创建?注入(初始化)参数给构造函数 - Autofac
示例代码:
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中为空?
是的,我能做到这一点的寄存器和东西很容易,只是当它需要从参数初始化的控制器,变得不易理解。我读了一些地方使用onactivating? –
我不理解你的评论。看起来你可能会传递类似IUserProfileGetter的东西给控制器的构造函数,并使用一个UserProfile属性,如果它不为null,它将返回_userProfile,或者在第一次调用时通过IUserProfileGetter的帮助创建它。 –