好,所以我已经为此工作了几个小时。我在这里找到了几篇文章,但是没有什么能真正解决问题。所以,让我再试一次...
我有一个使用Ninject和自定义成员资格提供程序的MVC2应用程序。
如果尝试使用ctor注入提供程序,则会收到错误消息:“未为此对象定义无参数构造函数。”
public class MyMembershipProvider : MembershipProvider
{
IMyRepository _repository;
public MyMembershipProvider(IMyRepository repository)
{
_repository = repository;
}
我也一直在玩工厂和Initialize(),但是一切都变得空白。
有什么想法/例子吗?
最佳答案
这就是我能够做到的方式:
1)我为Ninject创建了一个静态帮助器类
public static class NinjectHelper
{
public static readonly IKernel Kernel = new StandardKernel(new FooServices());
private class FooServices : NinjectModule
{
public override void Load()
{
Bind<IFooRepository>()
.To<EntityFooRepository>()
.WithConstructorArgument("connectionString",
ConfigurationManager.ConnectionStrings["FooDb"].ConnectionString);
}
}
}
2)这是我的会员资格覆盖:
public class FooMembershipProvider : MembershipProvider
{
private IFooRepository _FooRepository;
public FooMembershipProvider()
{
NinjectHelper.Kernel.Inject(this);
}
[Inject]
public IFooRepository Repository
{
set
{
_FooRepository = value;
}
}
...
使用这种方法,实例化成员资格提供程序实际上并不重要。