Unity Dependency не является рабочей страницей для докладчика в веб-формах - PullRequest
0 голосов
/ 25 февраля 2020

Я обновляю старый проект веб-форм, который работает по модели MVP. Реорганизовав это в многоуровневый проект, я начал использовать DI с помощью Unity.

У меня есть файлы ниже с моим новым DI, но в моем Presenter параметризованный конструктор не вызывается, и ObjView возвращает ноль. Как я могу исправить эту ошибку

IUsersView
{

    int UserID { get; set; }
    List<UsersModel> oPTList { get; set; }
    //Have only few methods
}

, и у меня есть страница, показанная ниже

Users(.aspx.cs) : System.Web.UI.Page, IUsersView
 {
   UserPresenter obj = null; //Old code
   IUserPresenter _userPresenter = null;
   public readonly IUsersView _userView;
   public readonly IUser _user;

   public User(IUser user,
            IUserPresenter userPresenter)
    {
        _user= user;
        _userPresenter = userPresenter;

    }

   protected void Page_Load(object sender, EventArgs e)
    {
      try{
           obj = new UserPresenter(this, _projectUpload); //Old Code 
           obj.CheckLoginUserExist(usrLoginID, usrName); //Old Code 
           _UserPresenter.CheckLoginUserExist(usrLoginID, usrName); // New Code with DI
        }
    }
 }

и код докладчика

public class UserPresenter : IUserPresenter
{
        IUserView objView;
        IUser _user= null;
        public UserPresenter()
        {

        }

        public UserPresenter(IUserView view, IUser user)
        {
            objView = view;
            _user = user;
        }
        public void CheckLoginUserExist(int usrLoginID, string usrName)
        {
            objView.oPTList = objBL.GetUserRoles(usrLoginID,usrName); //Old Code and i am getting date from DAL layer
            objView.GetUserRoles(); //Old Code
        }
}

enter image description here

1 Ответ

0 голосов
/ 25 февраля 2020

попробуйте, похоже, вы неправильно определили интерфейс.

Users(.aspx.cs) : System.Web.UI.Page, IUsersView
 {
   IUserPresenter _userPresenter;

   public readonly IUsersView _userView;
   public readonly IUser _user;

   public User(IUser user,
            IUserPresenter userPresenter)
    {
        _User = user;
        _userPresenter= userPresenter;

    }

   protected void Page_Load(object sender, EventArgs e)
    {
      try{
           obj = new UserPresenter(this, _projectUpload); //Old Code 
           obj.CheckLoginUserExist(usrLoginID, usrName); //Old Code 
           _userPresenter.CheckLoginUserExist(usrLoginID, usrName); // New Code with DI
        }
    }
 }
...