/// <summary>Creates an XML encoding of the security object and its current state.</summary>
/// <returns>An XML encoding of the security object, including any state information.</returns>
/// <PermissionSet>
/// <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="ControlEvidence" />
/// </PermissionSet>
public SecurityElement ToXml()
{
Hashtable hashtable = new Hashtable();
if (this.full_trust_assemblies.Count > 0 && !hashtable.Contains("StrongNameMembershipCondition"))
{
hashtable.Add("StrongNameMembershipCondition", typeof(StrongNameMembershipCondition).FullName);
}
SecurityElement securityElement = new SecurityElement("NamedPermissionSets");
foreach (object obj in this.named_permission_sets)
{
NamedPermissionSet namedPermissionSet = (NamedPermissionSet)obj;
SecurityElement securityElement2 = namedPermissionSet.ToXml();
object key = securityElement2.Attributes["class"];
if (!hashtable.Contains(key))
{
hashtable.Add(key, namedPermissionSet.GetType().FullName);
}
securityElement.AddChild(securityElement2);
}
SecurityElement securityElement3 = new SecurityElement("FullTrustAssemblies");
foreach (object obj2 in this.full_trust_assemblies)
{
StrongNameMembershipCondition strongNameMembershipCondition = (StrongNameMembershipCondition)obj2;
securityElement3.AddChild(strongNameMembershipCondition.ToXml(this));
}
SecurityElement securityElement4 = new SecurityElement("SecurityClasses");
if (hashtable.Count > 0)
{
foreach (object obj3 in hashtable)
{
DictionaryEntry dictionaryEntry = (DictionaryEntry)obj3;
SecurityElement securityElement5 = new SecurityElement("SecurityClass");
securityElement5.AddAttribute("Name", (string)dictionaryEntry.Key);
securityElement5.AddAttribute("Description", (string)dictionaryEntry.Value);
securityElement4.AddChild(securityElement5);
}
}
SecurityElement securityElement6 = new SecurityElement(typeof(PolicyLevel).Name);
securityElement6.AddAttribute("version", "1");
securityElement6.AddChild(securityElement4);
securityElement6.AddChild(securityElement);
if (this.root_code_group != null)
{
securityElement6.AddChild(this.root_code_group.ToXml(this));
}
securityElement6.AddChild(securityElement3);
return(securityElement6);
}