[英]How can I improve the performance and design of this code
下面是我當前正在使用的代碼,但是有沒有辦法使它更簡潔,更短? 我希望我的代碼看起來效率低下,外觀漂亮。 我的老師說了一些“用一個循環來做”,但是我不知道該循環能做什么以及它如何工作。
{
XmlWriter xmlWriter = XmlWriter.Create(PATH);
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("Config");
xmlWriter.WriteStartElement("TBSOMS");
xmlWriter.WriteString(TBSOMS.Text);
xmlWriter.WriteEndElement();
xmlWriter.WriteStartElement("TBWVB");
xmlWriter.WriteString(TBWVB.Text);
xmlWriter.WriteEndElement();
xmlWriter.WriteStartElement("TBWNB");
xmlWriter.WriteString(TBWNB.Text);
xmlWriter.WriteEndElement();
xmlWriter.WriteStartElement("TBASPMM1");
xmlWriter.WriteString(TBASPMM1.Text);
xmlWriter.WriteEndElement();
xmlWriter.WriteStartElement("TBASPMM2");
xmlWriter.WriteString(TBASPMM2.Text);
xmlWriter.WriteEndElement();
xmlWriter.WriteStartElement("TBDUM");
xmlWriter.WriteString(TBDUM.Text);
xmlWriter.WriteEndElement();
xmlWriter.WriteStartElement("TBADPR");
xmlWriter.WriteString(TBADPR.Text);
xmlWriter.WriteEndElement();
xmlWriter.WriteStartElement("TBAR");
xmlWriter.WriteString(TBAR.Text);
xmlWriter.WriteEndElement();
xmlWriter.WriteEndDocument();
xmlWriter.Close();
}
我將從這樣的東西開始...
var values = new Dictionary<string, string>
{
{ nameof(TBWVB), TBWVB.Text },
{ nameof(TBWNB), TBWNB.Text }
// .... etc ......
}
XmlWriter xmlWriter = XmlWriter.Create(PATH);
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("Config");
foreach (var item in values.Keys)
{
xmlWriter.WriteStartElement(item);
xmlWriter.WriteString(values[item]);
xmlWriter.WriteEndElement();
}
之類的東西:
private void writeElement(XmlWriter xmlwrtr, String element, var obj){
xmlwrtr.WriteStartElement(element);
xmlwrtr.WriteString(obj.Text);
xmlwrtr.WriteEndElement();
}
這將給:
{
XmlWriter xmlWriter = XmlWriter.Create(PATH);
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("Config");
writeElement(xmlWriter, "TBSOMS", TBSOMS)
writeElement(xmlWriter, "TBWVB", TBWVB)
// And so on
xmlWriter.WriteEndDocument();
xmlWriter.Close()
}
通過創建類變量,您可以通過多種方法訪問其值。
private static XmlWriter xmlWriter;
public void Write()
{
xmlWriter = XmlWriter.Create(Path);
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("Config");
new List<(elementDataType element, string name)> // note that you need to change "elementDataType" to your elements data type
{
(TBSOMS, nameof(TBSOMS)),
(TBWVB, nameof(TBWVB)),
// ... just list all elements in here
}.ForEach(elem => WriteElement(elem.element, elem.name));
xmlWriter.WriteEndDocument();
xmlWriter.Close();
}
private void WriteElement(var element, string name) //note that you need to change var to your elements datatype
{
xmlWriter.WriteStartElement(name);
xmlWriter.WriteString(element.Text);
xmlWriter.WriteEndElement();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.