我有一个getter,它从该类的另一个Property中读取现有数组,并过滤掉具有特定属性的元素。
问题是,在读取Property之后,它返回一个元素数量正确的数组,但所有包含的元素都为null。
在调试过程中,我看到元素已正确插入。
public Member[] Assigned_Users {
get {
Member[] _assigned_users = new Member[0];
//ERROR: foreach gets an array with the correct length, but all null elements
foreach (Member m in Nested_Users) {
if (m.Typ != Member.typ.User) continue;
Member[] _tmp = new Member[_assigned_users.Length + 1];
for (int r = 0; r <= _nested_members.Length - 1; r++) {
_tmp[r] = _assigned_users[r];
}
_tmp[_assigned_users.Length] = m;
_nested_members = _tmp;
}
foreach (Member m in Members) {
if (m.Typ != Member.typ.User) continue;
Member[] _tmp = new Member[_assigned_users.Length + 1];
for (int r = 0; r <= _nested_members.Length - 1; r++) {
_tmp[r] = _assigned_users[r];
}
_tmp[_assigned_users.Length] = m;
_nested_members = _tmp;
}
return _assigned_users;
}
}
public Member[] Nested_Users {
get {
Member[] _nested_users = new Member[0];
foreach (Member m in Nested_Members) {
if (m.Typ != Member.typ.User) continue;
Member[] _tmp = new Member[_nested_users.Length + 1];
for (int i = 0; i < _nested_users.Length - 1; i++) {
_tmp[i] = _nested_users[i];
}
_tmp[_nested_users.Length] = m;
_nested_users = _tmp;
}
//creates and returns a correct aray, acording to the debugger
return _nested_users;
}
}
任何想法如何解决这个问题?
编辑: 此代码用于以下目的。 在我们公司的古老时代,存在很多或LDAP组。由于许多LDAP实现不允许从嵌套的LDAP组中读取所有用户,因此我的公司构建了自己的用户管理后端。这是其中的一部分。 如果组已分配另一个组(这些信息都存储在SQL数据库中),则应读取嵌套组成员并将它们直接分配给基组。 所有这些都是针对针对LDAP进行身份验证的服务,但不知道如何读取嵌套组的用户。
但是即使List<Member>
是更好的方法,正如评论中所建议的那样(并且被be所知),应该没有理由为什么数组用null而不是成员对象填充。或者我在这里遗漏了什么?