我有一个名为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();
}
}