点击或拖拽改变大小

SerializerDivide 方法

使用指定的 ITextWriter 序列化指定的 原始对象 pOriValue 与 更新对象 pRevValue 间的增量内容。

命名空间:  XPatchLib
程序集:  XPatchLib (在 XPatchLib.dll 中) 版本:4.1.0.4
语法
C#
public void Divide(
	ITextWriter pWriter,
	Object pOriValue,
	Object pRevValue
)

参数

pWriter
类型: XPatchLibITextWriter
用于编写增量文档的 ITextWriter 实例。
pOriValue
类型: SystemObject
原始对象实例。
pRevValue
类型: SystemObject
更新后对象实例。
备注

使用 Divide 方法将原始对象与更新后对象之间差异内容的的公共字段和读/写属性转换为 增量数据。它不转换方法、索引器、私有字段或只读属性。

示例

下面的示例使用 XmlTextWriter 序列化指定的 原始对象 与 更新对象 间的增量内容。

C#
using System;
using System.IO;
using System.Text;
using System.Xml;

namespace XPatchLib.Example
{
    public class DivideExample
    {
        public static void Main(string[] args)
        {
            var t = new DivideExample();
            t.Divide();
        }

        private void Divide()
        {
            var serializer = new Serializer(typeof(OrderedItem));
            //原始对象
            var oldOrderItem = new OrderedItem();
            oldOrderItem.ItemName = "Widget";
            oldOrderItem.Description = "Small Widget";
            oldOrderItem.Quantity = 10;
            oldOrderItem.UnitPrice = (decimal) 2.30;
            oldOrderItem.Calculate();
            //更新后对象
            var newOrderItem = new OrderedItem();
            newOrderItem.ItemName = "Widget";
            newOrderItem.Description = "Big Widget";
            newOrderItem.Quantity = 15;
            newOrderItem.UnitPrice = (decimal) 7.80;
            newOrderItem.Calculate();

            using (var ms = new MemoryStream())
            {
                using (var writer = new XmlTextWriter(ms, new UTF8Encoding(false)))
                {
                    serializer.Divide(writer, oldOrderItem, newOrderItem);
                }
                ms.Position = 0;
                using (var stremReader = new StreamReader(ms, Encoding.UTF8))
                {
                    Console.WriteLine(stremReader.ReadToEnd());
                }
            }
        }

        public class OrderedItem
        {
            public string Description;
            public string ItemName;
            public decimal LineTotal;
            public int Quantity;
            public decimal UnitPrice;

            public void Calculate()
            {
                LineTotal = UnitPrice * Quantity;
            }
        }
    }
}

输出内容如下:

<?xml version="1.0" encoding="utf-8"?>
<OrderedItem>
  <Description>Big Widget</Description>
  <LineTotal>117.0</LineTotal>
  <Quantity>15</Quantity>
  <UnitPrice>7.8</UnitPrice>
</OrderedItem>
版本信息

.NET Framework

支持版本:4.5, 4.0, 3.5, 2.0

.NET Standard

支持版本:2.0, 1.3, 1.0
参见