だが、私はこのクラスを持っているとしましょう:登録ジェネリック型
public class DetailedQueryHandler<T> : IQueryHandlerAsync<Detailed, T>
where T : CalculationQuery
私はそのようにそれを登録することができます
builder.RegisterType(typeof(DetailedQueryHandler<CalculationWithDealerQuery>))
.As(typeof(IQueryHandlerAsync<Detailed, CalculationWithDealerQuery>));
builder.RegisterType(typeof(DetailedQueryHandler<CalculationQuery>))
.As(typeof(IQueryHandlerAsync<Detailed, CalculationQuery>));
しかし、私は、私は登録することができますように、より自動化方法でそれを登録したいです
var types = ThisAssembly.GetTypes();
builder.RegisterTypes(types)
.Where(t => t.ImplementGenericInterface(t2 => t2 == typeof(IQueryHandlerAsync<,>))
.AsImplementedInterfaces()
と
:以下IQueryHandlerAsyncインターフェイスへのタイプ210public interface IQueryHandlerAsync<T, in TI>
public static bool ImplementGenericInterface(this Type type, Func<Type, bool> comparer) {
return type.GetInterfaces().Any(i => i.IsGenericType
&& comparer(i.GetGenericTypeDefinition()));
}
これを解決するにはどうすればよいでしょうか?