将具有私有字段的对象序列化为Json

时间:2016-05-27 07:45:10

标签: .net json json.net portable-class-library

我有一个包含私有字段的对象,其中包含POCO集合。我希望能够使用Newtonsoft.Json便携包进行序列化。适当的方式是什么?换句话说,合同解析器的实施应该是什么? 感谢。

需要是可移植的,因此除非引入了填充库,否则使用绑定标志不是一个选项。

至于具体的例子,想一想这样的事情:

[Serializable]
public class SimpleItemDto
{
    public string Name { get; set; }
    public double Price { get; set; }
    public int Quantity { get; set; }
}

public interface ISimpleProvider
{
    IEnumerable<SimpleItemDto> GetSimpleItems();
}    

[Serializable]
class SimpleProviderBuilder : FakeBuilderBase<ISimpleProvider>
{
    private readonly List<SimpleItemDto> _warehouseItemsStorage = new List<SimpleItemDto>();

    private SimpleProviderBuilder()
    {

    }

    public static SimpleProviderBuilder CreateBuilder()
    {
        return new SimpleProviderBuilder();
    }

    public void WithWarehouseItems(IEnumerable<SimpleItemDto> warehouseItems)
    {
        _warehouseItemsStorage.Clear();
        _warehouseItemsStorage.AddRange(warehouseItems);
    }       

    protected override IServiceCall<ISimpleProvider> CreateServiceCall(IHaveNoMethods<ISimpleProvider> serviceCallTemplate)
    {
        var setup = serviceCallTemplate
           .AddMethodCallWithResult(t => t.GetSimpleItems(), r => r.Complete(GetSimpleItems));
        return setup;
    }

    private IEnumerable<SimpleItemDto> GetSimpleItems()
    {
        return _warehouseItemsStorage;
    }
}

注意DTO也可能变得复杂,因此序列化必须是分层的。

0 个答案:

没有答案