如何根据枚举值将类名作为泛型类型<t>传递?

时间:2017-06-07 13:30:43

标签: c# generics

我有以下功能。

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

我正在尝试根据枚举值传递classname,如下所示。

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

我可以这样做吗?如果不是,我怎样才能使用内联枚举条件实现这一点?

2 个答案:

答案 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);