2013-01-24 45 views
1

我有三個類通過XMLserializer方法序列化爲XML數據。有沒有辦法讓所有人都可以訪問這個方法,而不是在我的代碼中有三個xmlserialize方法。使XMLSerialzier方法成爲公共類

//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; 
} 

我的代碼重複該兩個用於兩個不同類的更多時間,將其寫入類,然後調用另一個方法XMLSERIALIZE因爲 該方法的輸入是不同類類型。 是否有方法使該方法公開或具有類或任何其他方式,以便我不必粘貼兩個完全相同但輸入類不同的附加012xx方法。

回答

2

既然你不做任何特定類,您可以鍵入object

private static string doSerialization(object r) 
{ 
    ... 
1

像柱先生X說,你可以使用一個object參數或使該方法一般。這種通用的方式目前對你來說沒有任何好處,但你可以用它來例如只是允許特定的類型。

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

的,只允許自定義類型:

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