我有三个类通过XMLserializer方法序列化为XML数据。是否有办法使所有方法都可以访问该方法,而不是在我的代码中使用三个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;
}
我的代码为两个不同的类重复这两次,它写入类,然后调用另一个xmlserialize方法 因为方法的输入是不同的类类型。 有没有办法让方法公开或有一个类或任何其他方式,以便我不必粘贴另外两个 xmlserialize方法完全相同但输入类不同。
答案 0 :(得分:2)
由于您没有执行任何特定于类的操作,因此您可以键入object
:
private static string doSerialization(object r)
{
...
答案 1 :(得分:1)
就像chue x所说,你可以使用object
参数或使方法通用。通用的方式目前对您没有任何好处,但您可以将其用于例如只允许特定类型。
private static string doSerialization<T>(T r)
{
// ..
}
仅允许自定义类型:
private static string doSerialization<T>(T r) where T : YourBaseClass
{
// ..
}