0

コード:

public static string Serialize<T>(IEnumerable<T> list)
{
    BinaryFormatter formatter = new BinaryFormatter();

    using (MemoryStream m = new MemoryStream())
    {
        formatter.Serialize(m, list);
        m.Position = 0;
        return Convert.ToBase64String(m.ToArray());
    } 

}

public static T Deserialize<T>(string listData)
{
    BinaryFormatter formatter = new BinaryFormatter();

    using (MemoryStream m = new MemoryStream())
    {
        return (IEnumerable<T>)formatter.Deserialize(m); //Problem is here
    }
}

エラー:

Error   1   Cannot implicitly convert type
'System.Collections.Generic.IEnumerable<T>' to 'T'. An
explicit conversion exists (are you missing a cast?)
4

2 に答える 2

3

IEnumerable<T>メッセージに明確に示されているように、returningとして宣言されたメソッドからを返すことはできませんT

于 2012-06-05T20:46:48.950 に答える
1

リターンタイプをからTに変更しIEnumerable<T>ます。また、次のように、メモリストリームを文字列で埋める必要があります。

public static IEnumerable<T> Deserialize<T>(string listData)
{
    BinaryFormatter formatter = new BinaryFormatter();

    using (MemoryStream m = new MemoryStream(Convert.FromBase64String(listData)))
    {
        return (IEnumerable<T>)formatter.Deserialize(m);
    }
}
于 2012-06-05T20:47:15.677 に答える