加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何使用Ninject注入asp.net(mvc2)自定义成员资格提供程序?

发布时间:2020-12-16 06:53:29 所属栏目:asp.Net 来源:网络整理
导读:好的,所以我几个小时都在研究这个问题.我在这里发现了几个帖子,但实际上没有解决问题.那么,让我再试一次…… 我有一个使用Ninject的MVC2应用程序和一个自定义成员资格提供程序. 如果我尝试使用ctor注入提供程序,我会收到一个错误:’没有为此对象定义无参数
好的,所以我几个小时都在研究这个问题.我在这里发现了几个帖子,但实际上没有解决问题.那么,让我再试一次……

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读