参数的构造函数错误
问题描述:
嗨,我初始界面在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
需要您的类具有公共参数的构造函数。如果你的类构造函数有参数,那么初始化程序不知道如何获取或实例化这些参数。
我建议您使用依赖注入库来初始化您的依赖关系。
感谢您的回复。我应该使用哪个库,并且是否有Global.asax的任何实现示例。谢谢 –
@OwaisAhmed [SimpleInjector](https://simpleinjector.org/index.html)或[Autofac](https://autofac.org/)。他们有很多功能和有据可查的文件。完成各种场景的很多示例。 –
如果你看到我的代码,我正在使用注册IAccountHelper的SimpleInjector,但我怎样才能调用Global.asax中的IAccountHelper内的SimpleMembershipInitializer()方法 –