【发布时间】:2017-07-21 21:04:15
【问题描述】:
一天中的美好时光!
我正在尝试传递几个类,这些类继承自一个基类。
结构如下:
-
权限类 - 用户权限
- 编辑:权限 - 能够编辑记录
- 删除:权限 - 能够删除记录
- 创建:权限 - 创建记录的能力
-
用户类 - 用户类
- private Permission[] 权限 - 用户可用的权限
- public void AddDefaultPermissions(Permission[] 权限)
我想不通的是如何将多个权限传递给这个函数并检查是否已经添加了权限。我的想法是允许类似以下方法调用:
AddDefaultPermissions(Edit, Delete, Create);
权限类:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public class Permission {
private int permissionID;
private string permissionName;
private string permissionDescription;
private int accessStartTimestamp;
private int accessEndTimestamp;
public int PermissionID {
get { return permissionID; }
set { permissionID = value; }
}
public string PermissionName {
get { return permissionName; }
set { permissionName = value; }
}
public string PermissionDescription {
get { return permissionDescription; }
set { permissionDescription = value; }
}
public int AccessStartTimestamp {
get { return accessStartTimestamp; }
set { accessStartTimestamp = value; }
}
public int AccessEndTimestamp {
get { return accessEndTimestamp; }
set { accessEndTimestamp = value; }
}
}
编辑类:
using System;
using System.Collections;
using System.Collections.Generic;
public class Edit : Permission {
public Edit() {
PermissionID = 1;
PermissionName = "Edit";
PermissionDescription = "Allow user to edit records";
AccessStartTimestamp = 1488369600;
AccessEndTimestamp = 1491048000;
}
}
为了检查权限是否已经存在,可以使用 PermissionID 变量。此变量由所有权限类继承,并且对于权限是唯一的(编辑 = 1、创建 = 2、删除 = 3);
我看到了一些使用 LINQ 的示例,但无法使其工作,因为实际上从未使用过 LINQ。 是否可以实现此功能+检查是否已添加权限以避免重复?
【问题讨论】:
-
您能否提供一些您的结构的示例代码?至少对我来说,很难理解你的结构。特别是:
Edit、Delete和Create是什么?那些是权限类的成员吗?还是从它派生的类?还是枚举成员?无论如何,要检查重复项,您只需致电permissions.Distinct(x => x.TheMemberToBeUnique)。 -
如果您使用正确的枚举类型,您可以将编辑、删除和创建全部作为一个选项。编辑将是 1、删除 2、创建 4 等等。
-
@HimBromBeere 当然,我会在 2 分钟内用示例更新问题
-
要允许该方法调用,请使用以下签名:“public void AddDefaultPermissions(params Permission[] permissions)”
-
AddDefaultPermissions方法应该做什么?它应该检查permissions数组中是否已经存在权限,还是应该只添加permissions数组中的所有内容(我是根据你的方法签名public void AddDefaultPermissions(Permission[] permissions)来问这个的)?