我有一个名为 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>>))]
答案 0 :(得分:1)
您的课程甚至没有使用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();
}
}