Вам нужно всего лишь зарегистрировать свой INumbersBusinessLayer
, так как это единственное, что вам действительно нужно ввести в ваш контроллер.
Кроме того, измените INumbersModel
на class
, чтобы вы могли его использовать.
Таким образом, ваш контроллер выглядит следующим образом:
public class NumbersController : Controller
{
private INumbersBusinessLayer _numbersBusinessLayer;
public NumbersController(INumbersBusinessLayer numbersBusinessLayer)
{
_numbersBusinessLayer = numbersBusinessLayer;
}
public ActionResult Index()
{
var modelList = _numbersBusinessLayer.AllNumbers.ToList();
return View(modelList);
}
[HttpGet]
public ActionResult Edit(int id)
{
var model = _numbersBusinessLayer.AllNumbers.Single(n => n.ID == id);
return View(model);
}
}
Тогда вы можетеупростите настройку AutoFac:
public static void ConfigureDependencyInjection()
{
var builder = new ContainerBuilder();
// ...or you can register individual controlllers manually.
builder.RegisterType<NumbersController>().InstancePerRequest();
builder.RegisterType<NumbersBusinessLayer>().As<INumbersBusinessLayer>();
IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
и измените интерфейс на класс:
public class NumbersModel
{
int ID { get; set; }
bool IsValid { get; set; }
string Numbers { get; set; }
string Order { get; set; }
string Time { get; set; }
}
Поскольку интерфейс вашего бизнес-уровня уже ожидает Numbersmodel
, но не INumbersmodel
, никаких изменений нетнужно там.