使用dto将bool从一个类传递到另一个类


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对象的实例时,我遇到的问题是,如果userpermission值为true,则该值不会传输到我的login.xaml.cs。当我调试程序时,所有userpermissions-dto的值都设置为默认值false。是否有人对转移用户权限或修复此损坏代码的更好方法有任何建议?

使用QuickWatch检查变量的用户权限数据值

您的GetUserPermission属于void类型,因此不会向调用者返回任何信息。它应该返回CCD_ 3。创建userPermissionsdto后,将其从呼叫中返回并让呼叫者使用。

您可以先创建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

最新更新