0
在Autofac註冊我的類型時遇到一些問題。Autofac - Resolve從泛型派生的類
我有以下設置基於另一個堆棧溢出帖子。 Validation: How to inject A Model State wrapper with 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類的函數功能構造的一切。我得到的錯誤是
請求的服務'Sw.Web.Validation.Validator`1 [[SweepHelper.Web.Models.AccountModel,Sw.Web,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]'尚未註冊。
任何人都可以在正確的方向指向我嗎?