7

呼び出し

List<PC> _PCList = new List<PC>();
...add Pc to PCList.. 
WriteXML<List<PC>>(_PCList, "ss.xml");

働き

public static void WriteXML<T>(T o, string filename)
{

    string filePath= Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Genweb2\\ADSnopper\\" + filename;

    XmlDocument xmlDoc = new XmlDocument();
    XPathNavigator nav = xmlDoc.CreateNavigator();
    using (XmlWriter writer = nav.AppendChild())
    {
        XmlSerializer ser = new XmlSerializer(typeof(List<T>), new XmlRootAttribute("TheRootElementName"));
        ser.Serialize(writer, o); // error
    }
    File.WriteAllText(filePath,xmlDoc.InnerXml);

}

内部例外

1[PC]' to type 'System.Collections.Generic.Listタイプ'System.Collections.Generic.List1 [System.Collections.Generic.List`1[PC]]'のオブジェクトをキャストできません。

助けてください

4

3 に答える 3

6

問題は回線にあります

XmlSerializer ser = new XmlSerializer(typeof(List<T>), ...

あなたTはすでにList<PC>です、そしてあなたは作成しようとしていますtypeof(List<T>)、それはに翻訳されtypeof(List<List<PC>>)ます。typeof(T)代わりにそれを作るだけです。

于 2012-09-26T07:47:35.950 に答える
3

そのはず

typeof(T) 

それ以外の

List<T> 

XmlSerializer ser = new XmlSerializer(typeof(T), new XmlRootAttribute("TheRootElementName"));
于 2012-09-26T07:47:30.623 に答える
1

問題を引き起こしているコードのこの行

XmlSerializer ser = new XmlSerializer(typeof(List<T>), 

不要なリストの作成リスト

XmlSerializer ser = new XmlSerializer(typeof(T), 

上記の変更を行うか、以下の変更を行うかのいずれか

署名を変更する必要があるメソッドに問題があります

public static void WriteXML<T>(List<T> o, string filename) 

以下のようにメソッドを呼び出します

WriteXML<PC>(_PCList, "ss.xml"); 

上記の変更を行うことで、問題が解決する場合があります。

于 2012-09-26T07:48:08.290 に答える