可以';I don’我不知道该怎么做

本文关键字:我不知道 don 可以 | 更新日期: 2023-09-27 17:49:25

好吧,我觉得自己像个十足的白痴。我已经阅读了文档,但仍然无法将其与Ninject一起使用。

 public class ContextAdapter:IDbSetProvider
{
    private readonly IContextFactory _contextFactory;
    #region Implementation of IDbSetProvider
    public ContextAdapter(IContextFactory contextFactory)
    {
        this._contextFactory = contextFactory;
    }
    public IDbSet<TEntity> CreateDBSet<TEntity>() where TEntity : class
    {
        var context = _contextFactory.Create();
        return context.Set<TEntity>();
    }
    #endregion
}

正如你所看到的,我需要为上面的类注入构造函数。嗯,进展不太顺利。帮助在我回到编写perl代码之前。开玩笑!!LOl

各位,有什么想法?

可以';I don’我不知道该怎么做

您的类ContextAdapter不实现IContextFactory。你有class Factory : IContextFactory这样的课吗?这就是你在这里所缺少的。然后您可以将其绑定为kernel.Bind<IContextFactory>.To<Factory>(),当您请求对象或需要履行合同时,Ninject将为您创建该类型。我认为你的困惑来自于绑定语法。通常,您不是将参数绑定在一起,而是将接口绑定到具体实现。这里有一个快速的例子:

Bind<IEngine>.To<GasEngine>();
Bind<ICar>.To<Sedan>();
class Sedan : ICar
{
    public Sedan(IEngine engine) { }
}
// ...
kernel.Get<ICar>(); // get me a new car

当你向Ninject请求ICar时,它会用绑定的Sedan来实现它。Sedan在其构造函数中需要一个IEngine,Ninject将使用GasEngine来实现,因为这是绑定的。