我有以下功能。
public static string SerializeObjectToXML<T>(object mainColumn)
{
return string.empty;
}
我正在尝试根据枚举值传递classname
,如下所示。
var tempstr = ClassName.SerializeObjectToXML<EnumClass.class1 == enumvalue ? ClassA: ClassB>(value);
我可以这样做吗?如果不是,我怎样才能使用内联枚举条件实现这一点?
答案 0 :(得分:4)
我会建议:
var tempstr = EnumClass.class1 == enumvalue
? ClassName.SerializeObjectToXML<ClassA>(value)
: ClassName.SerializeObjectToXML<ClassB>(value);
答案 1 :(得分: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);