【发布时间】:2016-03-18 15:58:46
【问题描述】:
我有一个未实例化的泛型类型,例如
public class Dto<T> {
public T t;
}
我需要从 DefaultContractResolver 获取此类型的 JsonContract。调用 ResolveContract 时,我遇到了 ArgumentException - 合同解析器正在尝试为此类型创建默认构造函数,我怀疑这对于未实例化的泛型类型是非法的。
我怎样才能获得这种类型的合同?
【问题讨论】:
-
1) 能否请您提供一个complete example,说明您在引发异常时如何调用
ResolveContract()? 2) 未实例化的泛型类型 是什么意思?你的意思是open generic type? -
是的,这是一个开放的泛型类型。我看看能不能吐个ideone什么的。
-
您无法获得开放泛型类型的合同。它不能被序列化或实例化。相反,每个封闭类型都有自己的合同。但我觉得这可能是xy problem。你能解释一下你想要完成什么吗?
-
这不是一个类型。它只是一个模板。要从中获得真正的类型,您需要知道具体的 T。
-
@dbc - 语义。我的意思是随意意义上的模板,不特定于 C# 术语。如果你想说它确实是一种类型 - 好吧,但是如果我们走这条路,并非所有类型都是平等的 :) 这就是我试图用我的评论来描述的