static double GetDouble(string prompt, string wrongpropmt = null, IFormatProvider fp = null)
{
var style = System.Globalization.NumberStyles.Number;
if (null == fp) fp = System.Globalization.CultureInfo.CurrentCulture;
if (string.IsNullOrEmpty(prompt)) prompt = "Enter double:";
if (string.IsNullOrEmpty(wrongpropmt)) wrongpropmt = "Invalid value!";
bool result = false;
while (true)
{
Console.Write(prompt);
var input = Console.ReadLine();
result = double.TryParse(input, style, fp, out double value);
if (!result) Console.WriteLine(wrongpropmt); else return value;
} // while
} // GetDouble
static void Main(string[] args)
{
// В русской локали ввод через запятую
// 65,32 - верно, 65.32 - ошибка
double value = GetDouble("Введите Х (разделитель - запятая):", "Неверное значение");
Console.WriteLine($"Введено: {value}");
// В инвариантной культуре - через точку
// 65,32 - ошибка, 65.32 - верно
value = GetDouble("Введите Х (разделитель - точка):", "Неверное значение", System.Globalization.CultureInfo.InvariantCulture);
Console.WriteLine($"Введено: {value}");
Console.ReadLine();
}// Main
MyPlot.SetPlotPort(-5, 5, -5, 5);
можно использовать 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">
GetDouble(запрос, строка с неправильным ответом, культура)
Культура нужна, как я и показал, потому что в русской локали используется запятая, а в американской, например, - точка. Если нужно, чтобы всегда ввод был с точкой, то вместо CurrentCulture в методе можно поставить InvariantCulture.