можно использовать https
using System;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
namespace ConsoleAppTest
{
public class Header
{
[XmlElement(elementName:"Sender", Namespace = "http://www.site1.com")]
public string Sender;
[XmlElement(elementName: "Receiver", Namespace = "http://www.site1.com")]
public string Receiver;
}
class Program
{
static void Main(string[] args)
{
Header header1 = new Header() { Sender = "SND1", Receiver = "RCV1" };
Header header2 = new Header() { Sender = "SND2", Receiver = "RCV2" };
XmlSerializerNamespaces nm = new XmlSerializerNamespaces();
nm.Add("v1", "http://www.site1.com");
Console.WriteLine("No override:\n");
StringBuilder sb = new StringBuilder();
XmlWriterSettings settings = new XmlWriterSettings() { OmitXmlDeclaration = true, Indent = true };
XmlWriter t_writer = XmlWriter.Create(sb, settings);
new XmlSerializer(typeof(Header)).Serialize(t_writer, header1, nm);
t_writer.Flush();
Console.WriteLine(sb.ToString());
Console.WriteLine("\nWith override:\n");
nm = new XmlSerializerNamespaces();
nm.Add("v2", "http://www.site2.com");
XmlAttributes overrideAttributes_sender = new XmlAttributes();
XmlAttributes overrideAttributes_receiver = new XmlAttributes();
overrideAttributes_sender.XmlElements.Add(
new XmlElementAttribute("Sender") { Namespace = "http://www.site2.com" });
overrideAttributes_receiver.XmlElements.Add(
new XmlElementAttribute("Receiver") { Namespace = "http://www.site2.com" });
XmlAttributeOverrides attr_overrides = new XmlAttributeOverrides();
attr_overrides.Add(typeof(Header), "Sender", overrideAttributes_sender);
attr_overrides.Add(typeof(Header), "Receiver", overrideAttributes_receiver);
sb = new StringBuilder();
t_writer = XmlWriter.Create(sb, settings);
new XmlSerializer(typeof(Header), attr_overrides).Serialize(t_writer, header2, nm);
t_writer.Flush();
Console.WriteLine(sb.ToString());
Console.ReadLine();
} // Main
} // class Program
} // namespace
No override:
<Header xmlns:v1="http://www.site1.com">
<v1:Sender>SND1</v1:Sender>
<v1:Receiver>RCV1</v1:Receiver>
</Header>
With override:
<Header xmlns:v2="http://www.site2.com">
<v2:Sender>SND2</v2:Sender>
<v2:Receiver>RCV2</v2:Receiver>
</Header>
"post" action="/"
<form asp-controller="Home" asp-action="Index" method="post">
<form action="/Home/Index" method="post">
public void Serialize (System.IO.Stream stream, object? o, System.Xml.Serialization.XmlSerializerNamespaces? namespaces);
Чтобы перевернуть надо бы ещё scaletransform сделать (1, -1) - чтобы все y координаты умножались на -1
А вообще тут либо/либо - либо считаешь всё сам и не трогаешь матрицы транформации вообще, либо пользуешься только ними. А здесь какой-то адский гибрид.
Вот это убери:
MyPlot.SetPlotPort(-5, 5, -5, 5);
Вместо этого задай матрицу трансформации
1. Масштабирование (Scale) до нужного размера + инверсия по y (значение коэффициента с минусом)
2. Сдвиг начала координат (Translate)
И единственное, что останется высчитать - толщину пера (Pen), потому что по умолчанию толщина в 1 будет очень толстой (это не пиксель, это лог. единица).