可以';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
各位,有什么想法?
您的类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
来实现,因为这是绑定的。