我有一个类Tempo。我可以自由改变:
public class Tempo
{
public Period Period { get; set; }
public int Value { get; set; } // in fact int should be a T here if it matters.
// more properties here
}
Period是来自我无法更改的外部依赖项的类。
public class Period
{
public DateTime Start { get; set; }
public DateTime End { get; set; }
public int Count { get; set; }
public string Foo { get; set; }
// more properties here
}
Period是一个巨大的类,有很多我不想序列化的属性。所以对我来说没有甜蜜[JsonIgnore]。从Period我想只保留属性Start和End。
我尝试使用 aDefaultContractResolver但没有成功:
class TempoResolver : DefaultContractResolver
{
protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
{
var props = base.CreateProperties(type, memberSerialization);
return props
.Where(p => p.PropertyName != "Period") // how to filter subclass?
.ToList();
}
}
我尝试使用 aJsonConverter但没有成功:
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var jo = new JObject();
var type = value.GetType();
jo.Add("type", type.Name);
foreach (var prop in type.GetProperties().Where(x => x.CanRead))
{
object propVal = prop.GetValue(value, null);
if (propVal != null)
{
jo.Add(prop.Name,
JToken.FromObject(propVal, serializer)); // how to filter subclass?
}
}
jo.WriteTo(writer);
}
在这两种情况下,我都不确定如何过滤Period. 如何在序列化期间忽略我不拥有的子类的属性?
当年话下
慕斯王
斯蒂芬大帝
相关分类