/// <summary>Creates an XML encoding of the security object, its current state, and the policy level within which the code exists.</summary>
/// <returns>An XML encoding of the security object, including any state information.</returns>
/// <param name="level">The policy level within which the code group exists. </param>
/// <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(PolicyLevel level)
{
SecurityElement securityElement = new SecurityElement("CodeGroup");
securityElement.AddAttribute("class", base.GetType().AssemblyQualifiedName);
securityElement.AddAttribute("version", "1");
if (this.Name != null)
{
securityElement.AddAttribute("Name", this.Name);
}
if (this.Description != null)
{
securityElement.AddAttribute("Description", this.Description);
}
if (this.MembershipCondition != null)
{
securityElement.AddChild(this.MembershipCondition.ToXml());
}
if (this.PolicyStatement != null && this.PolicyStatement.PermissionSet != null)
{
securityElement.AddChild(this.PolicyStatement.PermissionSet.ToXml());
}
foreach (object obj in this.Children)
{
CodeGroup codeGroup = (CodeGroup)obj;
securityElement.AddChild(codeGroup.ToXml());
}
this.CreateXml(securityElement, level);
return(securityElement);
}