public override SecurityElement ToXml() {
SecurityElement securityElement = new SecurityElement( "IPermission" );
securityElement.AddAttribute("class", this.GetType().FullName + ", " + this.GetType().Module.Assembly.FullName.Replace( '\"', '\'' ));
securityElement.AddAttribute("version", "1");
if (!IsUnrestricted()) {
if (m_connectList.Count > 0) {
SecurityElement permList = new SecurityElement("ConnectAccess");
foreach(EndpointPermission permission in m_connectList) {
SecurityElement endpoint = new SecurityElement("ENDPOINT");
endpoint.AddAttribute("host", permission.Hostname);
endpoint.AddAttribute("transport", permission.Transport.ToString());
endpoint.AddAttribute("port", permission.Port != AllPorts?
permission.Port.ToString(NumberFormatInfo.InvariantInfo): "All");
permList.AddChild(endpoint);
}
securityElement.AddChild(permList);
}
if (m_acceptList.Count > 0) {
SecurityElement permList = new SecurityElement("AcceptAccess");
foreach(EndpointPermission permission in m_acceptList) {
SecurityElement endpoint = new SecurityElement("ENDPOINT");
endpoint.AddAttribute("host", permission.Hostname);
endpoint.AddAttribute("transport", permission.Transport.ToString());
endpoint.AddAttribute("port", permission.Port != AllPorts?
permission.Port.ToString(NumberFormatInfo.InvariantInfo): "All");
permList.AddChild(endpoint);
}
securityElement.AddChild(permList);
}
}
else {
securityElement.AddAttribute("Unrestricted", "true");
}
return securityElement;
}