0

これを機能させようとしていますが、良い解決策が見つかりません。StructureMap がこれを実行できることは知っていますが、Ninject に行き詰まっています。

私が持っているもの:

public interface IFormHandler<T>
{
    void Handle(T form);
}

そして、このような複数のクラスを実装したい:

public class RegioDeleteModelFormHandler:IFormHandler<RegioDeleteModel>
{
    public void Handle(RegioDeleteModel form)
    {
    //implement method here
    }
}

またはこれ:

public class RegioUpdateModelFormHandler:IFormHandler<RegioUpdateModel>
{
    public void Handle(RegioUpdateModelform)
    {
    //implement method here
    }
}

コードのどこかで、次のようなものを呼び出せるようにしたいと思います。

var handler = DependencyResolver.Current.GetService<IFormHandler<T>>();

正しい IFormhandler を取得します。

これを行う方法はありますか?Ninject がこれを実行できない場合、回避策はありますか? 現在、Ninject のベース nuGet パッケージしかありません。関連パッケージのいずれかから使用できるものはありますか?

完全を期すために、これが私の DependencyResolverclass です。

public class NinjectDependencyResolver : IDependencyResolver { プライベート IKernel カーネル。

public NinjectDependencyResolver() {
    kernel = new StandardKernel();
    AddBindings();
}

public object GetService(Type serviceType) {
    return kernel.TryGet(serviceType);
}

public IEnumerable<object> GetServices(Type serviceType) {
    return kernel.GetAll(serviceType);
}

public IBindingToSyntax<T> Bind<T>() {
    return kernel.Bind<T>();
}

public IKernel Kernel {
    get { return kernel; }
}

private void AddBindings() {
    Bind<IUnitOfWork>().To<UnitOfWork>();
}

}

前もって感謝します!

EDIT my edit : 上記の AddBindings メソッドでこれを試したことと、それが機能することを追加する必要があるかもしれませんが、可能なすべての IFormHandlers に対してそれを行う必要がある場合、それは多くのコードになります。

Bind<IFormHandler<RegioDeleteModel>>().To<RegioDeleteModelFormHandler>();
4

1 に答える 1

1

規則を使用する: https://github.com/ninject/ninject.extensions.conventions/wiki/What-is-configuration-by-convention

于 2012-05-01T16:20:55.870 に答える