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 的实例?
在温莎城堡中你可以使用这样的代码:
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)
因此,我发现使用接口注册和解析泛型非常简单。关于城堡和泛型有很多问题。