2016-03-18 77 views
0

我有一個無法證明的泛型類型,例如獲得泛型類型的JSON合約

public class Dto<T> { 
    public T t; 
} 

我需要從DefaultContractResolver獲取此類型的JsonContract。當調用ResolveContract時,我得到一個ArgumentException - 合約解析器正試圖爲這種類型創建一個默認構造函數,我懷疑這對於一個沒有實際意義的泛型類型是非法的。

我該如何獲得這種類型的合同?

+0

1)當你拋出一個異常時,你可以請求一個[完整的例子](https://stackoverflow.com/help/mcve)你怎麼調用ResolveContract()? 2)你的意思是*無意義的泛型類型*?你的意思是[開放泛型類型](https://stackoverflow.com/questions/1735035/generics-open-and-closed-constructed-types)? – dbc

+0

是的,這是一個開放的泛型類型。我會看看我是否可以拋出一個ideone或什麼。 – Puppy

+0

您無法獲得開放式泛型類型的合約。它不能被序列化或實例化。相反,每種封閉類型都有自己的合同。但我覺得這可能是[xy問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。你能解釋一下你想完成什麼嗎? – dbc

回答

0

我最終動態生成了一個類來代替泛型參數,並用它來實例化它,並得到了結果的契約。然後,當我檢查合同時,我看到了佔位符,我知道我自己將其解釋爲泛指參數。