[英]How to pass class name as generic type <T> based on enum value?
I have the below function. 我有以下功能。
public static string SerializeObjectToXML<T>(object mainColumn)
{
return string.empty;
}
I am trying to pass classname
based on enum value as below. 我试图通过基于枚举值的
classname
,如下所示。
var tempstr = ClassName.SerializeObjectToXML<EnumClass.class1 == enumvalue ? ClassA: ClassB>(value);
Can I do this? 我可以这样做吗? If not how can I achieve this using inline enum condition?
如果没有,如何使用内联枚举条件实现这一目标?
I would suggest this: 我建议这样做:
var tempstr = EnumClass.class1 == enumvalue
? ClassName.SerializeObjectToXML<ClassA>(value)
: ClassName.SerializeObjectToXML<ClassB>(value);
I can't help but think you are not using generics to your full advantage. 我禁不住认为您没有充分利用泛型。 Just change
object
in your code to T
. 只需将代码中的
object
更改为T
。 Something like this: 像这样:
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();
}
And then call it like this: 然后这样称呼它:
ClassA a = new ClassA();
string objXml = SerializeObjectToXml(a);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.