2017-06-07 28 views
0

我有以下功能。如何根據枚舉值將類名稱作爲泛型<T>?

public static string SerializeObjectToXML<T>(object mainColumn) 
{ 
    return string.empty; 
} 

我想通過classname基於枚舉值如下。

var tempstr = ClassName.SerializeObjectToXML<EnumClass.class1 == enumvalue ? ClassA: ClassB>(value); 

我可以這樣做嗎?如果不是我怎麼能實現這種使用內聯枚舉條件?

回答

4

我建議這樣的:

var tempstr = EnumClass.class1 == enumvalue 
? ClassName.SerializeObjectToXML<ClassA>(value) 
: ClassName.SerializeObjectToXML<ClassB>(value); 
0

我不禁不使用泛型您充分利用認爲。只需將代碼中的object更改爲T即可。事情是這樣的:

public string SerializeObjectToXml<T>(T obj) 
{ 
    var sb = new StringBuilder(); 
    using (var wrt = new StringWriter(sb)) 
    { 
     XmlSerializer xs = new XmlSerializer(typeof(T)); 
     xs.Serialize(wrt, obj); 
    } 

    return sb.ToString(); 
} 

然後調用它像這樣:

ClassA a = new ClassA(); 
string objXml = SerializeObjectToXml(a); 
相關問題