2 // System.Security.Policy.PolicyStatement
\r
5 // Dan Lewis (dihlewis@yahoo.co.uk)
\r
10 using System.Security.Permissions;
\r
12 namespace System.Security.Policy {
\r
15 public sealed class PolicyStatement : ISecurityEncodable, ISecurityPolicyEncodable {
\r
16 public PolicyStatement (PermissionSet perms) :
\r
17 this (perms, PolicyStatementAttribute.Nothing)
\r
21 public PolicyStatement (PermissionSet perms, PolicyStatementAttribute attrs) {
\r
26 public PermissionSet PermissionSet {
\r
27 get { return perms; }
\r
28 set { perms = value; }
\r
31 public PolicyStatementAttribute Attributes {
\r
32 get { return attrs; }
\r
33 set { attrs = value; }
\r
36 public string AttributeString {
\r
37 get { return attrs.ToString ("F"); }
\r
40 public PolicyStatement Copy ()
\r
42 return new PolicyStatement (perms, attrs);
\r
45 // ISecurityEncodable
\r
47 public void FromXml (SecurityElement e)
\r
52 public void FromXml (SecurityElement e, PolicyLevel level)
\r
54 SecurityElement permissions = e.SearchForChildByTag ("PermissionSet");
\r
56 string attributes = e.Attribute ("Attributes");
\r
58 if (attributes != null)
\r
59 attrs = (PolicyStatementAttribute) Enum.Parse (
\r
60 typeof (PolicyStatementAttribute), attributes);
\r
62 perms = new PermissionSet (PermissionState.None);
\r
63 perms.FromXml (permissions);
\r
66 public SecurityElement ToXml ()
\r
68 return ToXml (null);
\r
71 public SecurityElement ToXml (PolicyLevel level)
\r
73 SecurityElement element = new SecurityElement ("PolicyStatement");
\r
74 element.AddAttribute ("version", "1");
\r
76 if (attrs != PolicyStatementAttribute.Nothing)
\r
77 element.AddAttribute ("Attributes", attrs.ToString ());
\r
79 element.AddChild (perms.ToXml ());
\r
84 private PermissionSet perms;
\r
85 private PolicyStatementAttribute attrs;
\r