diff --git a/XCode/Membership/PermissionFlags.cs b/XCode/Membership/PermissionFlags.cs
index 5e971b589..4b53153aa 100644
--- a/XCode/Membership/PermissionFlags.cs
+++ b/XCode/Membership/PermissionFlags.cs
@@ -5,7 +5,7 @@ namespace XCode.Membership;
/// 操作权限
[Flags]
[Description("操作权限")]
-public enum PermissionFlags
+public enum PermissionFlags : UInt32
{
/// 无权限
[Description("无权限")]
@@ -29,5 +29,5 @@ public enum PermissionFlags
/// 所有权限
[Description("所有")]
- All = 0x7FFFFFFF,
+ All = 0xFFFFFFFF,
}
diff --git a/XCode/Membership/角色.Biz.cs b/XCode/Membership/角色.Biz.cs
index 0702a088a..39a74fb2d 100644
--- a/XCode/Membership/角色.Biz.cs
+++ b/XCode/Membership/角色.Biz.cs
@@ -346,7 +346,7 @@ public partial class Role : LogEntity, IRole
/// 当前角色拥有的资源
[XmlIgnore, ScriptIgnore, IgnoreDataMember]
- public Int32[] Resources { get { return Permissions.Keys.ToArray(); } }
+ public Int32[] Resources => Permissions.Keys.ToArray();
#endregion
#region 业务
diff --git a/XUnitTest.XCode/Membership/PermissionFlagsTests.cs b/XUnitTest.XCode/Membership/PermissionFlagsTests.cs
new file mode 100644
index 000000000..c11ce0b81
--- /dev/null
+++ b/XUnitTest.XCode/Membership/PermissionFlagsTests.cs
@@ -0,0 +1,23 @@
+using System;
+using XCode.Membership;
+using Xunit;
+
+namespace XUnitTest.XCode.Membership;
+
+public class PermissionFlagsTests
+{
+ [Fact]
+ public void Test1()
+ {
+ var pm = (PermissionFlags)0xFFFFFFFF;
+ Assert.Equal(PermissionFlags.All, pm);
+ Assert.Equal(0xFFFFFFFF, (UInt32)pm);
+ Assert.Equal(-1, (Int32)pm);
+
+ var v = -1;
+ pm = (PermissionFlags)v;
+ Assert.Equal(PermissionFlags.All, pm);
+ Assert.Equal(0xFFFFFFFF, (UInt32)pm);
+ Assert.Equal(-1, (Int32)pm);
+ }
+}