10 Khi cố định cấu hình ServiceStack.net để sử dụng Ninject làm IOC của nó, tôi nhận được lỗi đề cập đến các ràng buộc khác nhau không được xác định. Chủ yếu cho khách hàng ICache.Cách cấu hình Ninject để làm việc với ServiceStack.net
Cần phải tạo các ràng buộc cụ thể nào để sử dụng Ninject đúng cách?
Hiện nay đã xác định:
Bind<ISessionFactory>().To<SessionFactory>();//Is this correct/needed?
Note
Tôi đã tạo ra một IContainerAdapter theo documention ServiceStack để thực hiện việc sử dụng Ninject. (Tìm thấy ở đây: ServiceStack IOC Docs)
Note 2 phương pháp apphost cấu hình của tôi trông như thế này:
public override void Configure(Funq.Container container)
{
IKernel kernel = new StandardKernel(new BindingModule());
container.Adapter = new NinjectContainerAdapter(kernel);
}
Note 3
Tôi đã đăng ký ICacheClient như sau: Bind ().Đến();
Và bây giờ tôi nhận được một lỗi trỏ đến IRequest
Error activating IRequestLogger\nNo matching bindings are available, and the type is not self-bindable
container Adaptor
public class NinjectContainerAdapter : IContainerAdapter
{
private readonly IKernel _kernel;
public NinjectContainerAdapter(IKernel kernel)
{
this._kernel = kernel;
}
public T TryResolve<T>()
{
return this._kernel.Get<T>();
}
public T Resolve<T>()
{
return this._kernel.Get<T>();
}
}
Có vui lòng xem ghi chú thứ hai của tôi ở trên. Đồng thời cố gắng thay đổi thành nội bộ không thành công – stephen776
Thông báo lỗi: Lỗi kích hoạt ICacheClient \ nKhông có kết nối phù hợp nào có sẵn và loại không tự ràng buộc – stephen776
Bạn đã đăng ký ICacheClient chưa? lưu ý việc sử dụng thuộc tính sử dụng giao diện TryResolve mà bộ điều hợp của bạn sẽ trả về null cho các phụ thuộc không tìm thấy/không đăng ký. Lỗi này giống như lỗi Ninject. Nếu không, bạn có thể đăng ký nó một cách rõ ràng với Bind (). (); nhưng trả về null là tốt hơn vì nó là hành vi mong đợi. –
mythz