【问题标题】:Dependency Injection returns class null依赖注入返回类 null
【发布时间】:2022-06-15 19:13:37
【问题描述】:

下面是我的 UserMenu.cs 类。

public class UsersMenu
{
    public UsersMenu()
    {
        sectionList = new List<Section>();
        moduleList = new List<Module>();
        taskList = new List<Task>();
        subTaskList = new List<SubTask>();
    }
    public string LevelNo { get; set; }
    public string LevelId { get; set; }
    public Section section { get; set; }
    public List<Section> sectionList { get; set; }
    public Module module { get; set; }
    public List<Module> moduleList { get; set; }
    public Task task { get; set; }
    public List<Task> taskList { get; set; }
    public SubTask subTask { get; set; }
    public List<SubTask> subTaskList { get; set; }
}

现在,如果我尝试在 UsersCompanyManager.cs 类中使用UsersMenu DI,如下所示。

namespace Identity.API.Business
{
    public class UsersCompanyManager : IUsersCompanyManager
    {
    
        private readonly IUsersCompanyDB usersCompanyDB;
        private UsersMenu _UsersMenu;
    
        public UsersCompanyManager(IUsersCompanyDB usersCompanyDB)
        {
           this.usersCompanyDB = usersCompanyDB;
        }
    
        public UsersCompanyManager(UsersMenu UsersMenu)
        {
           _usersMenu = UsersMenu;
        }
    
        public UsersMenu PermissionLevelMenu(UsersMenu usersMenu)
        {
           var test = _UsersMenu; //gives null
           return usersCompanyDB.PermissionLevelMenu(usersMenu);
        }
    }
    
}

这是 null var test = _UsersMenu; 如果我尝试在其他任何地方使用它,将显示 object reference is not set to an instance of an object 问题。下面是它的快照。

【问题讨论】:

    标签: c# dependency-injection constructor-injection


    【解决方案1】:

    你已经定义了两个构造函数,我认为这不是注入依赖项的正确方法,你可以这样做

    namespace Identity.API.Business
    {
        public class UsersCompanyManager : IUsersCompanyManager
        {
        
            private readonly IUsersCompanyDB usersCompanyDB;
            private UsersMenu _UsersMenu;
        
            public UsersCompanyManager(IUsersCompanyDB usersCompanyDB,UsersMenu UsersMenu)
            {
               this.usersCompanyDB = usersCompanyDB;
               _usersMenu = UsersMenu;
            }
        
        
            public UsersMenu PermissionLevelMenu(UsersMenu usersMenu)
            {
               var test = _UsersMenu; //gives null
               return usersCompanyDB.PermissionLevelMenu(usersMenu);
            }
        }
        
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多