2017-06-07 1 views
0

私は以下の機能を持っています。クラス名をジェネリック型として渡す方法<T> enum値に基づいてですか?

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

を私は助けることはできませんが、あなたの完全な利点にジェネリックを使用していないと思います。コード内のobjectTに変更してください。このような何か:このような

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); 
関連する問題