2 // System.Security.Policy.ZoneMembershipCondition.cs
5 // Duncan Mak (duncan@ximian.com)
7 // (C) 2003, Ximian Inc.
11 using System.Globalization;
13 namespace System.Security.Policy {
15 public sealed class ZoneMembershipCondition
16 : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable, IConstantMembershipCondition
20 public ZoneMembershipCondition (SecurityZone zone)
25 public SecurityZone SecurityZone {
30 public bool Check (Evidence evidence)
35 foreach (object o in evidence) {
38 if (z.SecurityZone == zone)
45 public IMembershipCondition Copy ()
47 return new ZoneMembershipCondition (zone);
50 public override bool Equals (Object o)
52 if (o is ZoneMembershipCondition == false)
55 return ((ZoneMembershipCondition) o).SecurityZone == zone;
58 public void FromXml (SecurityElement element)
60 FromXml (element, null);
63 public void FromXml (SecurityElement element, PolicyLevel level)
66 throw new ArgumentNullException (
67 Locale.GetText ("The argument is null."));
69 if (element.Attribute ("class") != GetType ().AssemblyQualifiedName)
70 throw new ArgumentException (
71 Locale.GetText ("The argument is invalid."));
73 if (element.Attribute ("version") != "1")
74 throw new ArgumentException (
75 Locale.GetText ("The argument is invalid."));
77 zone = (SecurityZone) Enum.Parse (
78 typeof (SecurityZone), element.Attribute ("Zone"));
81 public override int GetHashCode ()
83 return zone.GetHashCode ();
86 public override string ToString ()
88 return "Zone - " + zone;
91 public SecurityElement ToXml ()
96 public SecurityElement ToXml (PolicyLevel level)
98 SecurityElement element = new SecurityElement ("IMembershipCondition");
99 element.AddAttribute ("version", "1");
101 element.AddAttribute ("Zone", zone.ToString ());