MVC 4 プロジェクトを MVC 5 ベータ版 (および Web Api プロジェクトを Web Api 2) に変換したところ、DependencyResolver
必要なクラスを解決できないという問題が発生しています。
解決したいクラスは次のとおりです。
public class GetPartsQueryValidationHandler
: IQueryValidationHandler<GetPartsQuery, Part[]>
{
...
}
Bootstrapper.cs で Autofac に登録する方法は次のとおりです (両方のプロジェクトでこれを行います)。
builder.RegisterAssemblyTypes(dataAccessAssembly)
.AsClosedTypesOf(typeof(IQueryValidationHandler<,>))
.InstancePerHttpRequest(); //..PerApiRequest in Web Api
また、両方のプロジェクトに DependencyResolver を登録します。
Mvc プロジェクト:
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
Web API プロジェクト:
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
次に、3 番目のプロジェクトで、以下を呼び出して参照を解決します。
var handlerType = typeof(IQueryValidationHandler<,>).MakeGenericType(query.GetType(), typeof(TResult));
dynamic handler = DependencyResolver.Current.GetService(handlerType);
しかし、これは私にヌルを与えますhandler
どうにかしてそのクラスを解決する必要があります。