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的幫助創建它。 –