1

XMLserializerメソッドを介してXMLデータにシリアル化される3つのクラスがあります。コードに3つのxmlserializeメソッドを含めるのではなく、すべての人がメソッドにアクセスできるようにする方法はありますか?

//Here I'm writing to my class with the data that needs to be serialized                  
PERSON r = new PERSON();
Input l = new Search.Input();
INPUTSEARCHNBR ln = new INPUTSEARCHNBR();
ln.number = pnumber;                  
r.query = ln;                
string xml = doSerialization(r);

//Call the xmlserializer method 
private static string doSerialization(PERSON r)
{
    string serializedValue = string.Empty;

    try
    {
        XmlSerializer xmlSerializer = new XmlSerializer(r.GetType());

        using (MemoryStream ms = new MemoryStream())
        {
            xmlSerializer.Serialize(ms, r);

            ms.Position = 0;
            var sr = new StreamReader(ms);
            serializedValue = sr.ReadToEnd();
        }


        serializedVal = serializedValue.Replace("version=\"0\"", string.Empty).Replace("<?xml version=\"1.0\"?>", string.Empty).Replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", string.Empty);
    }

    return serializedVal;
} 

私のコードは、2つの異なるクラスに対してこれをさらに2回繰り返し、クラスに書き込み、メソッドの入力が異なるクラスタイプであるため、別のxmlserializeメソッドを呼び出します。メソッドをパブリックにする方法、クラスとして持つ方法、またはその他の方法で、まったく同じであるが入力クラスが異なる2つの追加のxmlserializeメソッドを貼り付ける必要がないようにする方法はありますか?

4

2 に答える 2

2

クラス固有のことは何もしないので、次のように入力できますobject

private static string doSerialization(object r)
{
    ...
于 2013-01-24T14:06:52.240 に答える
1

chue xが言ったように、objectパラメーターを使用するか、メソッドをジェネリックにすることができます。一般的な方法は、現時点では何のメリットもありませんが、特定のタイプを許可するなどの目的で使用できます。

private static string doSerialization<T>(T r)
{
    // ..
}

カスタムタイプのみを許可するには:

private static string doSerialization<T>(T r) where T : YourBaseClass
{
    // ..
}
于 2013-01-24T14:15:51.697 に答える