【问题标题】:Get JSON contract for generic type获取泛型类型的 JSON 契约
【发布时间】: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# 术语。如果你想说它确实是一种类型 - 好吧,但是如果我们走这条路,并非所有类型都是平等的 :) 这就是我试图用我的评论来描述的

标签: c# json generics json.net


【解决方案1】:

我最终动态生成了一个类来代替泛型参数,用它实例化它,并得到结果的契约。然后,当我检查合同时,我看到了占位符,并且我知道自己将其解释为指的是泛型参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 2019-01-20
    • 2022-10-06
    • 1970-01-01
    相关资源
    最近更新 更多