序列化泛型字典
Serialize generic dictionary
我想序列化一个对象。但我希望对象必须是字典(tkey 和 tvalue 任何类型)。
到目前为止我的代码:
public static byte[] Serialize<T>(this T source)
{
try
{
if (source == null)
{
return null;
}
using (var memoryStream = new MemoryStream())
{
var binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, source);
return memoryStream.ToArray();
}
}
catch(Exception e)
{
return default(byte[]);
}
}
现在我希望“源”只能是像 Dictionary, Dictionary, ...
这样的字典
public static byte[] Serialize<T,V>(this Dictionary<T,V> source)
{
try
{
if (source == null)
{
return null;
}
using (var memoryStream = new MemoryStream())
{
var binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, source);
return memoryStream.ToArray();
}
}
catch(Exception e)
{
return default(byte[]);
}
}
使用此定义只能将 Dictionary 传递给该方法。
在示例 https://dotnetfiddle.net/SQY6zs 中,您可以看到 Serialize()
可以应用于 Dictionary<int,bool>
但不能应用于 int
我想序列化一个对象。但我希望对象必须是字典(tkey 和 tvalue 任何类型)。
到目前为止我的代码:
public static byte[] Serialize<T>(this T source)
{
try
{
if (source == null)
{
return null;
}
using (var memoryStream = new MemoryStream())
{
var binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, source);
return memoryStream.ToArray();
}
}
catch(Exception e)
{
return default(byte[]);
}
}
现在我希望“源”只能是像 Dictionary
public static byte[] Serialize<T,V>(this Dictionary<T,V> source)
{
try
{
if (source == null)
{
return null;
}
using (var memoryStream = new MemoryStream())
{
var binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, source);
return memoryStream.ToArray();
}
}
catch(Exception e)
{
return default(byte[]);
}
}
使用此定义只能将 Dictionary
在示例 https://dotnetfiddle.net/SQY6zs 中,您可以看到 Serialize()
可以应用于 Dictionary<int,bool>
但不能应用于 int