2012-08-30 43 views
0

我想用它继承的泛型类型来解析具体类型。使用Castle Windsor解决具有泛型类型的接口

这一切似乎工作,但是当我尝试和呼吁解决具体类型的方法,它抛出一个异常:

{“的最佳重载的方法匹配 “MvcApplication2.Utilities.Common .CQRS.GetAlbumsByIdQueryHandler.Execute(MvcApplication2.Utilities.Common.CQRS.GetAlbumsByIdQuery)” 有一些无效参数“}

有谁知道什么可能会造成这个?解决的类型是正确的,我认为这可能与使用动态类型有关?

谢谢。


这里是我的处理程序安装:

container.Register(AllTypes.FromAssemblyContaining<IQueryHandler>() 
             .BasedOn(typeof (IQueryHandler<>)) 
             .WithService 
             .AllInterfaces() 
             .LifestyleSingleton()); 

,分辨率也是目前:

 Type queryHandlerType = typeof (IQueryHandler<>).MakeGenericType(query.GetType()); 
     dynamic queryHandler = _kernal.Resolve(queryHandlerType); 

     return queryHandler.Handle(query); 

及相关类:

public interface IQueryHandler<in TQuery> : IQueryHandler where TQuery : IQuery 
{ 
    IQueryResult Handle(TQuery query); 
} 


public class GetAlbumsByIdQueryHandler : IQueryHandler<GetAlbumsByIdQuery> 
{ 
    #region IQueryHandler<GetAlbumsByIdQuery> Members 

    public IQueryResult Execute(GetAlbumsByIdQuery query) 
    { 
     throw new NotImplementedException(); 
    } 

    #endregion 
} 

回答

1
return queryHandler.Handle((dynamic)query); 
相关问题