0

Autofac に自分の型を登録させるのに問題があります。

別のスタックオーバーフローの投稿に基づいて、次のセットアップを行いました。 検証: Ninject でモデル状態ラッパーを注入する方法は?

私のセットアップは次のとおりです

public interface IValidator : IDependancy

public abstract class Validator<T> : IValidator

public class UserValidator : Validator<AccountModel>

sealed class ValidationProvider : IValidationProvider
{
    private readonly Func<Type, IValidator> _validatorFactory;

    public ValidationProvider(Func<Type, IValidator> validatorFactory)
    {
        _validatorFactory = validatorFactory;
    }
...

私のAutofac設定は

builder.RegisterType(typeof (ValidationProvider)).As<IValidationProvider>();

builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies())
       .Where(t => t.BaseType==(typeof(Validator<>))).InstancePerDependency()
       .As<IValidator>();

builder.Register<Func<Type, IValidator>>(c =>
{
      var cc = c.Resolve<IComponentContext>();
      return type =>
      {
          var valType = typeof(Validator<>).MakeGenericType(type);
          return (IValidator) cc.Resolve(valType);   // failing here
      }; 
 });

ValidationProvider クラスの Func コンストラクターを除くすべてを解決できます。私が得ているエラーは

要求されたサービス 'Sw.Web.Validation.Validator`1[[SweepHelper.Web.Models.AccountModel, Sw.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' は登録されていません。

ここで誰かが私を正しい方向に向けることができますか?

4

1 に答える 1