0

継承元のジェネリック型のインターフェイスを使用して、具象型を解決しようとしています。

すべてが機能しているように見えますが、解決された具象型でメソッドを呼び出そうとすると、次の例外がスローされます。

{"'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
}
4

1 に答える 1

1
  return queryHandler.Handle((dynamic)query);
于 2012-08-30T10:10:13.307 に答える