参数的构造函数错误

问题描述:

嗨,我初始界面在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();          
} 

的代码工作正常。

谁能告诉我什么是错误的错误代码。

任何帮助,将不胜感激。

在此先感谢

LazyInitializer.EnsureInitialized需要您的类具有公共参数的构造函数。如果你的类构造函数有参数,那么初始化程序不知道如何获取或实例化这些参数。

我建议您使用依赖注入库来初始化您的依赖关系。

+0

感谢您的回复。我应该使用哪个库,并且是否有Global.asax的任何实现示例。谢谢 –

+0

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

+0

如果你看到我的代码,我正在使用注册IAccountHelper的SimpleInjector,但我怎样才能调用Global.asax中的IAccountHelper内的SimpleMembershipInitializer()方法 –