使用 Castle Windsor 解析具有泛型类型约束的接口

Mat*_*ett 4 c# generics castle-windsor

给定 FooRequest 和 FooResponse 是抽象的接口:

 public interface IFooHandler<TRequest, TResponse> where TRequest : FooRequest where TResponse : FooResponse
{
    TResponse CheckFoo(TRequest request);
}
Run Code Online (Sandbox Code Playgroud)

实施:

public class MyFooHandler :  IFooHandler<MyFooRequest, MyFooResponse>
{
    public MyFooResponse CheckFoo(MyFooRequest request)
    {
        /* check for foos */
    }
}
Run Code Online (Sandbox Code Playgroud)

我如何在温莎城堡中注册它,以便我可以使用(其中 IoCContainer 是 WindsorContainer:

Global.IoCContainer.Resolve<IFooHandler<FooRequest, FooResponse>>();
Run Code Online (Sandbox Code Playgroud)

解析 MyFooHandler 的实例?

Ogn*_*rov 5

在温莎城堡中你可以使用这样的代码:

public void Install(IWindsorContainer container, IConfigurationStore store)
{
    container.Register(
    Component.For(typeof(IRepository<>)).ImplementedBy(typeof(Repository<>))
}
);

public class Repository<T> : IRepository<T> where T : class, IEntity
{
...
}
Run Code Online (Sandbox Code Playgroud)

因此,我发现使用接口注册和解析泛型非常简单。关于城堡和泛型有很多问题。