Когда я взламывал наш код, я только что заметил эту функцию. Он преобразует IDictionary
(параметры - переменная экземпляра) в строку XML.
Это не что иное, как любопытство с моей стороны :-).
Можно ли написать намного меньше кода с использованием C # 4.0? Правило: никаких внешних библиотек, кроме BCL .Net Framework.
Чтобы усложнить задачу, я не помещаю сюда спецификацию входного словаря, так как вы сможете решить это из кода.
public string ConvertToXml() {
XmlDocument doc = new XmlDocument();
doc.LoadXml("<?xml version='1.0' encoding='utf-8'?><sc/>");
foreach (KeyValuePair<string, object> param in Parameters) {
XmlElement elm = doc.CreateElement("pr");
if (param.Value is int || param.Value is Int32 || param.Value is Int16 || param.Value is Int64) {
elm.SetAttribute("tp", "int");
} else if (param.Value is DateTime?){
elm.SetAttribute("tp", "datetime");
} else {
elm.SetAttribute("tp", "string");
}
elm.SetAttribute("nm", param.Key);
if (param.Value is DateTime?) {
DateTime? dateTime = param.Value as DateTime?;
elm.SetAttribute("vl", dateTime.Value.ToString("o"));
} else{
elm.SetAttribute("vl", param.Value.ToString());
}
doc.FirstChild.NextSibling.AppendChild(elm);
}
return doc.OuterXml;
}
Позвольте мне добавить еще несколько мыслей.
Для меня: