/// <summary>从 XML 编码重新构造具有指定状态的权限。</summary> /// <param name="securityElement"> /// <see cref="T:System.Security.SecurityElement" />,包含用于重新构造权限的 XML 编码。</param> /// <exception cref="T:System.ArgumentNullException"> /// <paramref name="securityElement" /> 为 null。</exception> /// <exception cref="T:System.ArgumentException"> /// <paramref name="securityElement" /> 不是一个有效的权限元素。- 或 -不支持 <paramref name="securityElement" /> 的版本号。</exception> public override void FromXml(SecurityElement securityElement) { CodeAccessPermission.ValidateElement(securityElement, (IPermission)this); if (XMLUtil.IsUnrestricted(securityElement)) { this.m_flags = KeyContainerPermissionFlags.AllFlags; this.m_accessEntries = new KeyContainerPermissionAccessEntryCollection(this.m_flags); } else { this.m_flags = KeyContainerPermissionFlags.NoFlags; string str = securityElement.Attribute("Flags"); if (str != null) { KeyContainerPermissionFlags flags = (KeyContainerPermissionFlags)Enum.Parse(typeof(KeyContainerPermissionFlags), str); KeyContainerPermission.VerifyFlags(flags); this.m_flags = flags; } this.m_accessEntries = new KeyContainerPermissionAccessEntryCollection(this.m_flags); if (securityElement.InternalChildren == null || securityElement.InternalChildren.Count == 0) { return; } foreach (SecurityElement child in securityElement.Children) { if (child != null && string.Equals(child.Tag, "AccessList")) { this.AddAccessEntries(child); } } } }
public override IPermission Union(IPermission target) { KeyContainerPermission kcp = Cast(target); if (kcp == null) { return(Copy()); } KeyContainerPermissionAccessEntryCollection kcpaec = new KeyContainerPermissionAccessEntryCollection(); // copy first group foreach (KeyContainerPermissionAccessEntry kcpae in _accessEntries) { kcpaec.Add(kcpae); } // copy second group... foreach (KeyContainerPermissionAccessEntry kcpae in kcp._accessEntries) { // ... but only if not present in first group if (_accessEntries.IndexOf(kcpae) == -1) { kcpaec.Add(kcpae); } } if (kcpaec.Count == 0) { return(new KeyContainerPermission((_flags | kcp._flags))); } KeyContainerPermissionAccessEntry[] list = new KeyContainerPermissionAccessEntry [kcpaec.Count]; kcpaec.CopyTo(list, 0); return(new KeyContainerPermission((_flags | kcp._flags), list)); }
public override void FromXml (SecurityElement securityElement) { CodeAccessPermission.ValidateElement(securityElement, this); if (XMLUtil.IsUnrestricted(securityElement)) { m_flags = KeyContainerPermissionFlags.AllFlags; m_accessEntries = new KeyContainerPermissionAccessEntryCollection(m_flags); return; } m_flags = KeyContainerPermissionFlags.NoFlags; string strFlags = securityElement.Attribute("Flags"); if (strFlags != null) { KeyContainerPermissionFlags flags = (KeyContainerPermissionFlags) Enum.Parse(typeof(KeyContainerPermissionFlags), strFlags); VerifyFlags(flags); m_flags = flags; } m_accessEntries = new KeyContainerPermissionAccessEntryCollection(m_flags); if (securityElement.InternalChildren != null && securityElement.InternalChildren.Count != 0) { IEnumerator enumerator = securityElement.Children.GetEnumerator(); while (enumerator.MoveNext()) { SecurityElement current = (SecurityElement) enumerator.Current; if (current != null) { if (String.Equals(current.Tag, "AccessList")) AddAccessEntries(current); } } } }
/// <summary>Creates a permission that is the union of the current permission and the specified permission.</summary> /// <returns>A new permission that represents the union of the current permission and the specified permission.</returns> /// <param name="target">A permission to combine with the current permission. It must be of the same type as the current permission. </param> /// <exception cref="T:System.ArgumentException"> /// <paramref name="target" /> is not null and does not specify a permission of the same type as the current permission. </exception> public override IPermission Union(IPermission target) { KeyContainerPermission keyContainerPermission = this.Cast(target); if (keyContainerPermission == null) { return(this.Copy()); } KeyContainerPermissionAccessEntryCollection keyContainerPermissionAccessEntryCollection = new KeyContainerPermissionAccessEntryCollection(); foreach (KeyContainerPermissionAccessEntry accessEntry in this._accessEntries) { keyContainerPermissionAccessEntryCollection.Add(accessEntry); } foreach (KeyContainerPermissionAccessEntry accessEntry2 in keyContainerPermission._accessEntries) { if (this._accessEntries.IndexOf(accessEntry2) == -1) { keyContainerPermissionAccessEntryCollection.Add(accessEntry2); } } if (keyContainerPermissionAccessEntryCollection.Count == 0) { return(new KeyContainerPermission(this._flags | keyContainerPermission._flags)); } KeyContainerPermissionAccessEntry[] array = new KeyContainerPermissionAccessEntry[keyContainerPermissionAccessEntryCollection.Count]; keyContainerPermissionAccessEntryCollection.CopyTo(array, 0); return(new KeyContainerPermission(this._flags | keyContainerPermission._flags, array)); }
public KeyContainerPermission (PermissionState state) { if (state == PermissionState.Unrestricted) m_flags = KeyContainerPermissionFlags.AllFlags; else if (state == PermissionState.None) m_flags = KeyContainerPermissionFlags.NoFlags; else throw new ArgumentException(Environment.GetResourceString("Argument_InvalidPermissionState")); m_accessEntries = new KeyContainerPermissionAccessEntryCollection(m_flags); }
public KeyContainerPermission (KeyContainerPermissionFlags flags, KeyContainerPermissionAccessEntry[] accessList) { SetFlags (flags); if (accessList != null) { _accessEntries = new KeyContainerPermissionAccessEntryCollection (); foreach (KeyContainerPermissionAccessEntry kcpae in accessList) { _accessEntries.Add (kcpae); } } }
public KeyContainerPermission (KeyContainerPermissionFlags flags, KeyContainerPermissionAccessEntry[] accessList) { if (accessList == null) throw new ArgumentNullException("accessList"); Contract.EndContractBlock(); VerifyFlags(flags); m_flags = flags; m_accessEntries = new KeyContainerPermissionAccessEntryCollection(m_flags); for (int index = 0; index < accessList.Length; index++) { m_accessEntries.Add(accessList[index]); } }
public KeyContainerPermission(KeyContainerPermissionFlags flags, KeyContainerPermissionAccessEntry[] accessList) { SetFlags(flags); if (accessList != null) { _accessEntries = new KeyContainerPermissionAccessEntryCollection(); foreach (KeyContainerPermissionAccessEntry kcpae in accessList) { _accessEntries.Add(kcpae); } } }
public KeyContainerPermission(KeyContainerPermissionFlags flags, KeyContainerPermissionAccessEntry[] accessList) { if (accessList == null) { throw new ArgumentNullException("accessList"); } VerifyFlags(flags); this.m_flags = flags; this.m_accessEntries = new KeyContainerPermissionAccessEntryCollection(this.m_flags); for (int i = 0; i < accessList.Length; i++) { this.m_accessEntries.Add(accessList[i]); } }
/// <summary>用指定的全局访问和特定的密钥容器访问权限来初始化 <see cref="T:System.Security.Permissions.KeyContainerPermission" /> 类的新实例。</summary> /// <param name="flags"> /// <see cref="T:System.Security.Permissions.KeyContainerPermissionFlags" /> 值的按位组合。</param> /// <param name="accessList"> /// <see cref="T:System.Security.Permissions.KeyContainerPermissionAccessEntry" /> 对象数组,标识特定的密钥容器访问权限。</param> /// <exception cref="T:System.ArgumentException"> /// <paramref name="flags" /> 不是 <see cref="T:System.Security.Permissions.KeyContainerPermissionFlags" /> 值的有效组合。</exception> /// <exception cref="T:System.ArgumentNullException"> /// <paramref name="accessList" /> 为 null。</exception> public KeyContainerPermission(KeyContainerPermissionFlags flags, KeyContainerPermissionAccessEntry[] accessList) { if (accessList == null) { throw new ArgumentNullException("accessList"); } KeyContainerPermission.VerifyFlags(flags); this.m_flags = flags; this.m_accessEntries = new KeyContainerPermissionAccessEntryCollection(this.m_flags); for (int index = 0; index < accessList.Length; ++index) { this.m_accessEntries.Add(accessList[index]); } }
public KeyContainerPermission(PermissionState state) { if (state == PermissionState.Unrestricted) { this.m_flags = KeyContainerPermissionFlags.AllFlags; } else { if (state != PermissionState.None) { throw new ArgumentException(Environment.GetResourceString("Argument_InvalidPermissionState")); } this.m_flags = KeyContainerPermissionFlags.NoFlags; } this.m_accessEntries = new KeyContainerPermissionAccessEntryCollection(this.m_flags); }
/// <summary>用指定的访问权限初始化 <see cref="T:System.Security.Permissions.KeyContainerPermission" /> 类的新实例。</summary> /// <param name="flags"> /// <see cref="T:System.Security.Permissions.KeyContainerPermissionFlags" /> 值的按位组合。</param> /// <exception cref="T:System.ArgumentException"> /// <paramref name="flags" /> 不是 <see cref="T:System.Security.Permissions.KeyContainerPermissionFlags" /> 值的有效组合。</exception> public KeyContainerPermission(KeyContainerPermissionFlags flags) { KeyContainerPermission.VerifyFlags(flags); this.m_flags = flags; this.m_accessEntries = new KeyContainerPermissionAccessEntryCollection(this.m_flags); }
public KeyContainerPermission (KeyContainerPermissionFlags flags) { VerifyFlags(flags); m_flags = flags; m_accessEntries = new KeyContainerPermissionAccessEntryCollection(m_flags); }
internal KeyContainerPermissionAccessEntryEnumerator (KeyContainerPermissionAccessEntryCollection entries) { m_entries = entries; m_current = -1; }
public KeyContainerPermission(KeyContainerPermissionFlags flags) { VerifyFlags(flags); m_flags = flags; m_accessEntries = new KeyContainerPermissionAccessEntryCollection(m_flags); }
internal KeyContainerPermissionAccessEntryEnumerator(KeyContainerPermissionAccessEntryCollection entries) { m_entries = entries; m_current = -1; }
public override IPermission Union (IPermission target) { KeyContainerPermission kcp = Cast (target); if (kcp == null) return Copy (); KeyContainerPermissionAccessEntryCollection kcpaec = new KeyContainerPermissionAccessEntryCollection (); // copy first group foreach (KeyContainerPermissionAccessEntry kcpae in _accessEntries) { kcpaec.Add (kcpae); } // copy second group... foreach (KeyContainerPermissionAccessEntry kcpae in kcp._accessEntries) { // ... but only if not present in first group if (_accessEntries.IndexOf (kcpae) == -1) kcpaec.Add (kcpae); } if (kcpaec.Count == 0) return new KeyContainerPermission ((_flags | kcp._flags)); KeyContainerPermissionAccessEntry[] list = new KeyContainerPermissionAccessEntry [kcpaec.Count]; kcpaec.CopyTo (list, 0); return new KeyContainerPermission ((_flags | kcp._flags), list); }