2016-11-02 149 views
0

嗨,我初始界面在Global.ascx這樣參數的構造函數錯誤

private static SimpleMembershipInitializer _initializer; 
private static object _initializerLock = new object(); 
private static bool _isInitialized; 



public SimpleMembershipInitializer(IAccountHelper iAccountHelper) 
{    
    _accountHelper = iAccountHelper; 
    _accountHelper.SimpleMembershipInitializer(); 

} 


#endregion 
protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 
    SimpleInjector.SetupDependencyInjection(); 
    // Ensure ASP.NET Simple Membership is initialized only once per app start 
    LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock); 
} 

但我得到一個錯誤

的延遲初始化類型不具有公共,無參數構造函數。

我在做什麼錯在這裏?

另外,如果我改變了代碼以下

public SimpleMembershipInitializer() 
{     
    _accountHelper = new AccountHelper();     
    _accountHelper.SimpleMembershipInitializer();          
} 

的代碼工作正常。

誰能告訴我什麼是錯誤的錯誤代碼。

任何幫助,將不勝感激。

在此先感謝

回答

1

LazyInitializer.EnsureInitialized需要您的類具有公共參數的構造函數。如果你的類構造函數有參數,那麼初始化程序不知道如何獲取或實例化這些參數。

我建議您使用依賴注入庫來初始化您的依賴關係。

+0

感謝您的回覆。我應該使用哪個庫,並且是否有Global.asax的任何實現示例。謝謝 –

+0

@OwaisAhmed [SimpleInjector](https://simpleinjector.org/index.html)或[Autofac](https://autofac.org/)。他們有很多功能和有據可查的文件。完成各種場景的很多示例。 –

+0

如果你看到我的代碼,我正在使用註冊IAccountHelper的SimpleInjector,但我怎樣才能調用Global.asax中的IAccountHelper內的SimpleMembershipInitializer()方法 –