简体   繁体   English

如何将类名作为通用类型传递 <T> 基于枚举值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM