【问题标题】:Passing bools from one class to another using a dto使用 dto 将布尔值从一个类传递到另一个类
【发布时间】:2021-07-16 08:46:47
【问题描述】:
public void GetUserPermission(string username)
{
    using var db = new SOSContext();
    {
        var userAccount = db.Users.SingleOrDefault(x => x.UserName == username);
        UserPermissionsDTO userPermissions = new UserPermissionsDTO()
        {
            CanManageUsers = userAccount.CanManageUsers,
            CanManageCustomers = userAccount.CanManageCustomers,
            CanManageStocks = userAccount.CanManageStocks,
            CanManageOrders = userAccount.CanManageOrders,
            CanManageDeliveries = userAccount.CanManageDeliveries,
        };
    }

我有这种方法可以查询数据库以检查与正确用户名匹配的用户的用户权限。我正在尝试将这些用户权限转移到我的应用程序中的 login.xaml.cs 类。我正在使用 dto 对象来执行此操作。

class UserPermissionsDTO
{
    public bool CanManageUsers { get; set; }
    public bool CanManageCustomers { get; set; }
    public bool CanManageStocks { get; set; }
    public bool CanManageOrders { get; set; }
    public bool CanManageDeliveries { get; set; }
}

在 userpermissions 方法中创建 dto 对象的实例时遇到的问题,如果 userpermissions 值为 true,则此值不会传输到我的 login.xaml.cs。当我调试程序时,所有用户权限 DTO 的值都设置为默认值 false。有人对转移用户权限或修复此损坏代码的更好方法有任何建议吗?

using QuickWatch to check value of userpermissions dto variables

【问题讨论】:

  • 我想你必须向我们展示你如何将你的 userPermissions 对象转移到你的视图中。
  • 尝试将GetUserPermission的返回类型从void更改为UserPermissionsDTO。然后在您的调用代码(从您的屏幕截图中)更改为UserPermissionsDTO userPermissions = GetUserPermission(...)

标签: c# .net dto


【解决方案1】:

您的GetUserPermission 属于void 类型,因此它不会向调用者返回任何信息。它应该返回UserPermissionsDTO。创建 userPermissions dto 后,从调用中返回它并让调用者使用它。

【讨论】:

    【解决方案2】:

    您可以先创建 dto 并将其传递给 GetUserPermission 方法并在那里分配您的值。然后,您可以在调用该方法的位置使用这些值。像这样的东西应该可以工作:

    public void GetUserPermission(string username, UserPermissionsDTO dto)
        {
            if (string.IsNullOrWhiteSpace(username)) return;
    
            using var db = new SOSContext();
            {
                var userAccount = db.Users.SingleOrDefault(x => x.UserName.ToLower() == username.ToLower());
                if (userAccount == null) return;
                dto.CanManageUsers = userAccount.CanManageUsers;
                dto.CanManageCustomers = userAccount.CanManageCustomers;
                dto.CanManageStocks = userAccount.CanManageStocks;
                dto.CanManageOrders = userAccount.CanManageOrders;
                dto.CanManageDeliveries = userAccount.CanManageDeliveries;
            }
        }
    

    调用上述方法:

    var userPermissions = new UserPermissionsDTO();
    userService.GetUserPermission(username, userPermissions);
    var canManagerUsers = userPermissions.CanManageUsers;
    // Map other permissions
    

    【讨论】:

    • 我在 login.xaml.cs 类中调用 GetUserPermissions 方法,但我不明白为什么在定义 userpermissions dto 之前我想检查用户名是 null 还是空,因为我有另一种方法在执行用户权限代码之前调用 userlogin 已经完成此操作
    猜你喜欢
    • 1970-01-01
    • 2021-09-16
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    相关资源
    最近更新 更多