C# 将类作为类型传递

C# 将类作为类型传递,c#,serialization,xml-serialization,C#,Serialization,Xml Serialization,我试图传入一个类型对象以传递给序列化程序 internal void SerializeXML(Object ObjType, String XMLRoot, Object Output, String Filename) { XmlSerializer serializer = new XmlSerializer(typeof(ObjType), new XmlRootAttribute(XMLRoot)); StreamReader reader =

我试图传入一个类型对象以传递给序列化程序

internal void SerializeXML(Object ObjType, String XMLRoot, Object Output, String Filename)
    {
        XmlSerializer serializer = new XmlSerializer(typeof(ObjType), new XmlRootAttribute(XMLRoot));

        StreamReader reader = new StreamReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(Filename));
        Output = (Type)serializer.Deserialize(reader);
        reader.Close();
    }
我想通过(Main.LanguageList.Language是一个类)调用它:


我得到的对象是一个变量,但用作类型。

编写一个泛型方法会更优雅:

内部void反序列化xml(字符串XMLRoot,T输出,字符串文件名)
{
XmlSerializer serializer=新的XmlSerializer(typeof(T),新的XmlRootAttribute(XMLRoot));
StreamReader=新的StreamReader(System.Reflection.Assembly.GetExecutionGassembly().GetManifestResourceStream(文件名));
输出=(T)序列化程序。反序列化(读取器);
reader.Close();
}
这样称呼它:

DeserializeXML<Main.LanguageList.Language>("Language", LanguageListFile, InternalLangListXML);
var result = DeserializeXML<Main.LanguageList.Language>("Language", InternalLangListXML);
反序列化XML(“语言”,LanguageListFile,InternalLangListXML);
此外,建议更改方法以返回结果,而不是依赖输出参数:

internal T DeserializeXML<T>(String XMLRoot, String Filename)
{
    XmlSerializer serializer = new XmlSerializer(typeof(T), new XmlRootAttribute(XMLRoot));

    using (StreamReader reader = new StreamReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(Filename)))
    {
        return (T)serializer.Deserialize(reader);
    }
}
internalt反序列化xml(字符串XMLRoot,字符串文件名)
{
XmlSerializer serializer=新的XmlSerializer(typeof(T),新的XmlRootAttribute(XMLRoot));
使用(StreamReader reader=new StreamReader(System.Reflection.Assembly.GetExecutionGassembly().GetManifestResourceStream(文件名)))
{
返回(T)序列化程序。反序列化(读取器);
}
}
然后可以这样称呼它:

DeserializeXML<Main.LanguageList.Language>("Language", LanguageListFile, InternalLangListXML);
var result = DeserializeXML<Main.LanguageList.Language>("Language", InternalLangListXML);
var result=反序列化XML(“语言”,InternalLangListXML);

您的问题被删除了我的答案,取而代之的是您更好的答案。(:-D)