如何获取<T> JsonConverter 的类类型?



我有一个名为Foo的类,如下例所示。此类的 Content 属性是泛型列表类型。我想检查 Content 属性是否具有一个或多个项。但是我收到一个错误,因为"属性参数无法使用类型参数"。我正在等待您的帮助。提前谢谢..

[DataContract]
public class Foo<T> where T : class
{
    [JsonConverter(typeof(SingleOrMany<T>))]
    public List<T> Content { get; set; }
}
public class SingleOrMany<T> : JsonConverter
{
    public override bool CanConvert(System.Type objectType)
    {
        throw new NotImplementedException();
    }
    public override object ReadJson(JsonReader reader, System.Type objectType, object existingValue, JsonSerializer serializer)
    {
        throw new NotImplementedException();
    }
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        throw new NotImplementedException();
    }
}

我的问题与下面的示例不同。此处 T 用于泛型列表。

[JsonConverter(typeof(ConcreteTypeConverter<List<T>>))]

你的类甚至不使用T .只需将其删除即可。您可以从传入的参数中获取类型信息(例如 objectType )。

删除T后,可以毫无问题地将typeof(SingleOrMany)传递给属性。

[DataContract]
public class Foo<T> where T : class
{
    [JsonConverter(typeof(SingleOrMany))]
    public List<T> Content { get; set; }
}
public class SingleOrMany : JsonConverter
{
    public override bool CanConvert(System.Type objectType)
    {
        throw new NotImplementedException();
    }
    public override object ReadJson(JsonReader reader, System.Type objectType, object existingValue, JsonSerializer serializer)
    {
        throw new NotImplementedException();
    }
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        throw new NotImplementedException();
    }
}

相关内容

  • 没有找到相关文章

最新更新