序列化泛型字典

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