У меня есть следующие настройки
public interface IObject
{
string Name { get; set;}
}
public class ConcreteObject : IObject
{
public string Name { get; set; }
}
public ActionResult Index(IObject myObject)
{
return View();
}
У меня есть конкретный класс, который реализует IObject, и я использую внедрение зависимостей для привязки этого конкретного класса к интерфейсу.
Используя Autofac, у меня также есть следующие настройки
var builder = new ContainerBuilder();
builder.RegisterModule(new AutofacWebTypesModule());
builder.RegisterSource(new ViewRegistrationSource());
builder.RegisterFilterProvider();
builder.RegisterControllers(Assembly.GetExecutingAssembly()).InjectActionInvoker().PropertiesAutowired();
builder.RegisterModelBinders(Assembly.GetExecutingAssembly());
builder.RegisterModelBinderProvider();
builder.RegisterType<ExtensibleActionInvoker>().As<IActionInvoker>().WithParameter("injectActionMethodParameters", true);
builder.RegisterType<ConcreteObject>().As<IObject>().InstancePerHttpRequest();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
Когда я запускаю это, я получаю экземпляр конкретного класса, но любые параметры, которые обычно связаны с строкой запроса, теперь равны нулю. то есть: Home / Index? Name = test будет привязывать экземпляр, но не привязывать параметр Name. Есть ли способ гарантировать, что привязка модели все еще происходит после DI?