gpt4 book ai didi

c# - 比较两个文件夹的 ACL

转载 作者:行者123 更新时间:2023-11-30 22:55:35 30 4
gpt4 key购买 nike

如何比较两个不同文件夹的 AuthorizationRuleCollection?我想知道ACL是否相同。

我的解决方案是遍历每个项目并计算 IdentityReference.Value + AccessMask 的哈希值。然后将它们全部加起来并比较每个集合的总数。

有没有更好的方法?

最佳答案

我会使用 SequenceEqual 从 LINQ 自 AuthorizationRuleCollection 工具 IEnumerable .唯一的问题是 AuthorizationRule不会覆盖 object.Equals()这意味着我们需要提供定制 IEqualityComparer<AuthorizationRule>像这样:

public class AuthorizationRuleEqualityComparer : IEqualityComparer<AuthorizationRule>
{
public static readonly AuthorizationRuleEqualityComparer Instance = new AuthorizationRuleEqualityComparer();

private AuthorizationRuleEqualityComparer()
{
}

public bool Equals(AuthorizationRule l, AuthorizationRule r)
{
// Compare more fields if needed.
return l.IdentityReference == r.IdentityReference;
}

public int GetHashCode(AuthorizationRule rule)
{
return rule.IdentityReference.GetHashCode();
}
}

用法:

AuthorizationRuleCollection arc1;
AuthorizationRuleCollection arc2;
var equal = arc1
.OfType<AuthorizationRule>()
.SequenceEqual(
arc2.OfType<AuthorizationRule>(),
AuthorizationRuleEqualityComparer.Instance);

关于c# - 比较两个文件夹的 ACL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55182498/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com