Serialize only interface properties to JSON with Json.net

前端 未结 9 1957
孤街浪徒
孤街浪徒 2020-12-08 19:50

With a simple class/interface like this

public interface IThing
{
    string Name { get; set; }
}

public class Thing : IThing
{
    public int Id { get; se         


        
9条回答
  •  执念已碎
    2020-12-08 20:29

    The method I use,

    public class InterfaceContractResolver : DefaultContractResolver
    {
        private readonly Type _InterfaceType;
        public InterfaceContractResolver (Type InterfaceType)
        {
            _InterfaceType = InterfaceType;
        }
    
        protected override IList CreateProperties(Type type, MemberSerialization memberSerialization)
        {
            //IList properties = base.CreateProperties(type, memberSerialization);
            IList properties = base.CreateProperties(_InterfaceType, memberSerialization);
            return properties;
        }
    }
    
    // To serialize do this:
    var settings = new JsonSerializerSettings() {
         ContractResolver = new InterfaceContractResolver (typeof(IThing))
    });
    string json = JsonConvert.SerializeObject(theObjToSerialize, settings);
    

提交回复
热议问题