好,所以我已经为此工作了几个小时。我在这里找到了几篇文章,但是没有什么能真正解决问题。所以,让我再试一次...

我有一个使用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;
            }
        }
        ...


使用这种方法,实例化成员资格提供程序实际上并不重要。

10-05 22:51
查看更多