3

class 属性を持つクラスがあります:

[XmlRoot(ElementName = "RootXML")]
public class Apply
{
    /My Properties
}

上記のクラスから xml を作成するには、以下の関数を使用します。

public virtual string RenderXml()
{

    XmlTextWriter writer = null;
    try
    {
        MemoryStream ms = new MemoryStream();
        writer = new XmlTextWriter(ms, Encoding.UTF8);
        writer.Formatting = Formatting.Indented;
        XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
        ns.Add("", "");
        _xmlSerializer.Serialize(writer, this, ns);
        ms.Position = 0;
        using (StreamReader sr = new StreamReader(ms))
        {
            return sr.ReadToEnd();
        }
    }
    finally
    {
        if (writer != null)
            writer.Close();
    }
}

私の質問は、「RootXML」に属性を追加し、構成ファイルと関数から属性の値を読み取る方法です。

<RootXML attr1="read from config" attr2="read from function" >
    <Property1>value</Property1>
</RootXML>
4

1 に答える 1

2

クラスプロパティ属性に追加する[XmlAttribute]と、そのプロパティは属性としてシリアル化されます

[XmlRoot(ElementName = "RootXML")]
public class Apply
{
    private string _testAttr="dfdsf";



    [XmlAttribute]
    public String TestAttr
    {
        get { return _testAttr; }

        set { _testAttr = value; }
    }
}

そのクラスのシリアル化結果

<RootXML TestAttr="dfdsf" />

最後のコメントに追加。私の理解が正しければ、セッションに必要なキーは 1 つだけです。それが本当なら、あなたはそのようなものを使うことができます:

string GetKey(){

      if (String.IsNullOrEmpty(HttpContext.Current.Session["mySessionKey"].ToString()))
                HttpContext.Current.Session["mySessionKey"] = GenereteKey();
      return HttpContext.Current.Session["mySessionKey"].ToString();

}
于 2013-05-24T10:55:54.863 に答える