将参数传递给ninject Provier

问题描述 投票:1回答:1

使用ninject,我想为MyRepository类创建一个提供程序,该提供程序依赖于ApplicationDbContext

public class MyRepository<TEntity> 
    where TEntity : MyEntity
{
    private ApplicationDbContext _dbContext;

    public MyRepository(ApplicationDbContext dbContext)
    {
        _dbContext = dbContext;
    }

    // ...
}

我看过this document,它解释了如何创建提供者,但我不确定:

  1. 如何将ApplicationDbConext参数传递给提供者
  2. 如何实例化通用类型

这是我的尝试:

public class MyRepositoryProvider : Provider<MyRepository> 
{
    protected override MyRepository CreateInstance(IContext context)
    {
        // how to create a generic instance of type T?
        MyRepository myRepository = new MyRepository<T>(/*need ApplicationDbContext*/);
        return myRepository;
    }
}

如果无法使用提供程序来实现,那么任何人都可以演示如何使用Factory interface来做到这一点吗?

c# ninject provider ninject-extensions
1个回答
0
投票

这可能是XY problem,您真正需要的是为存储库注册一个开放的通用名称

© www.soinside.com 2019 - 2024. All rights reserved.