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
}
}
错误1无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'T'。存在显式转换(您是否错过了演员?)\
请告知。
答案 0 :(得分:3)
正如消息中明确指出的那样,您无法从声明为返回IEnumerable<T>
的方法返回T
。
答案 1 :(得分: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);
}
}