如何约束T以支持DataContractJsonSerializer,而不是在任何地方实现ISerializable?

时间:2011-01-23 03:30:41

标签: c# json generics serialization extension-methods

我正在研究this扩展方法,并尝试约束T,以便该方法不适用于每个对象...只是DataContractJsonSerializer适用于

的方法
public static string ToJSONString(this object obj)
    {
        using (var stream = new MemoryStream())
        {
            var ser = new DataContractJsonSerializer(obj.GetType());

            ser.WriteObject(stream, obj);

            return Encoding.UTF8.GetString(stream.ToArray());
        }
    }

1 个答案:

答案 0 :(得分:1)

仿制药中可用的选项是......有限。一种解决方法是使用反射(通常在泛型类型的静态ctor中)来检查反射,但是这可能是过度的。您是否可以添加where T : class, new(),这可能会将其限制为“实体”/ DTO类型。