Я думаю, вам нужно использовать UInt32
как тип вашего перечисления GroupType
следующим образом:
[Flags]
public enum GroupType : uint
{
BUILTIN_LOCAL_GROUP = 0x00000001,
ACCOUNT_GROUP = 0x00000002,
RESOURCE_GROUP = 0x00000004,
UNIVERSAL_GROUP = 0x00000008,
APP_BASIC_GROUP = 0x00000010,
APP_QUERY_GROUP = 0x00000020,
SECURITY_ENABLED = 0x80000000
}
Позвольте мне знать, если это решит вашу проблему.
EDIT: ОК, я не был уверен, был ли объект Entry
объектом, который вы создали, или частью API Active Directory. Сказав это, я быстро создал следующие переменные в проекте я в настоящее время работает над и составлен следующим образом:
// I only made it static so I could get my compiler to compile this in something I'm currently
// working on. It's not necessary for it to be static.
static int SECURITY_ENABLED = 0x80000000;
int newValue = SECURITY_ENABLED | 1;
я не получил каких-либо ошибок во время компиляции. Фактически, пересматривая значение 0x80000000
, это хорошо в диапазоне Int32
.
Повторное рассмотрение вашего кода выше, на какой строке именно вы получаете сообщение об ошибке? Я вижу этот код подозрительности:
Возможно, этот код можно было бы упростить?
public List<GroupType> GetGroupType()
{
var groupTypes = new List<GroupType>();
var flag = (GroupType) this.Entry.Properties["groupType"].Value;
if (flag & GroupType.ACCOUNT_GROUP > 0)
groupTypes.Add(GroupType.ACCOUNT_GROUP;
else if (flag & GroupType.APP_BASIC_GROUP > 0)
groupTypes.Add(GroupType.APP_BASIC_GROUP);
// ... Other else if ad nauseum ...
else if (flag & GroupType.SERUCITY_ENABLED > 0)
groupTypes.Add(GroupType.SECURITY_ENABLED);
return groupTypes;
}
Если вам действительно нужен ArrayList()
по какой-либо причине, вы могли бы просто сделать return groupTypes.ToArray<int>();
HTH.
флаг должен быть int 0x80000000 вписывается в устройство красиво. – urbanlemur
По умолчанию Int32 подписан. Можете ли вы использовать UInt32 ?? – fourpastmidnight
Entry.Properties ["groupType"]. Возвращает значение -2147483646. Когда я пытаюсь передать его в uint, я получаю InvalidCastException – wodzu