Я пару дней читал об Unity в MVC, и я пытался заставить это работать - надеясь, что вы, ребята, можете помочь.
Я настроил Unity в путиздесь описан , который, судя по обширному поиску, кажется достаточно распространенным.Я, вероятно, могу подтвердить, что эта настройка работает, так как на моем домашнем контроллере я могу заставить этот DI работать нормально:
public class HomeController : Controller
{
[Dependency]
public IRepository repo { get; set; }
public ActionResult Index()
{
string message = repo.GetMessage();
ViewData["OUT"] = message;
return View();
}
}
Однако у меня есть класс ("Контакт"), который по разным причинам также нуждается вдоступ к методам репозитория, следовательно, связь и требование для DI.Так что в классе у меня есть свойство [Dependency], как и выше.Так, например, у меня есть следующий код:
public partial class Contact
{
[Dependency]
public IRepository repo { get; set; }
public string CoupledProperty
{
get
{
return repo.GetCoupledProperty();
}
}
Итак, если я попытаюсь извлечь уже существующий объект Contact на контроллере дома, например:
public class HomeController : Controller
{
[Dependency]
public IRepository repo { get; set; }
public ActionResult Index()
{
Contact contact = repo.GetContact(1);
string message = contact.CoupledProperty;
ViewData["OUT"] = message;
return View();
}
}
, я получу объектошибка неинстанцированного выделения строки кода в классе Contact, где CoupledProperty пытается получить доступ к хранилищу.И, конечно же, замена свойства Dependency в классе Contact для жестко закодированного объекта хранилища работает правильно.
Кто-нибудь может увидеть, что здесь происходит не так?
Cheers,
Tim.
РЕДАКТИРОВАТЬ:
Метод GetContact (int) в хранилище:
public Contact GetContact(int id)
{
return db.Contacts.SingleOrDefault(c => c.ContactID == id);
}