2011-01-23 39 views
1

我正在this擴展方法,我試圖限制牛逼,這樣的方法並不適用於每一個對象......只是那些在DataContractJsonSerializer與如何限制T來支持DataContractJsonSerializer,而不是在任何地方實現ISerializable?

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

「適用於」?需要更具體。 DataContractJsonSerializer不僅適用於實現特定接口的對象。它適用於所有人。 – Amy 2011-01-23 03:48:09

回答

1

可用的選項內效果很好泛型是...有限。一種解決方法是使用反射(通常在一個泛型類型上的靜態ctor)來檢查反射,但這可能是矯枉過正。你可能會添加where T : class, new(),這可能會將其限制爲「實體」/ DTO類型。

相關問題