在让 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]]' 尚未注册。
谁能在这里指出我正确的方向?