/*------------------------------------------------------------------------- * 功能描述:CompareItem * 作者:xulisong * 创建时间: 2019/6/28 15:44:52 * 版本号:v1.0 * -------------------------------------------------------------------------*/ using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using FWindSoft.Data; using FWindSoft.Data.Compare; using FWindSoft.SystemExtensions; namespace Test.CompareTest { public class TestConverter : FlatObjectConverter { public override bool CanConvert(object obj, PickSetting setting) { return false; } protected override void WriteFlatObject(object obj, FlatObject flatObject, string prefix, PickSetting setting) { flatObject.AddValue(prefix, "ccc的converter测试纸"); } } public class TestConverter2 : FlatObjectConverter { public override bool CanConvert(object obj, PickSetting setting) { return obj.GetType() == typeof(ConvertTestItem2); } protected override void WriteFlatObject(object obj, FlatObject flatObject, string prefix, PickSetting setting) { flatObject.AddValue(prefix, "ccc的TestConverter2测试纸"); } } public class CompareItem { public string Name { get; set; } public int Age { get; set; } public ChildItem Child { get; set; } } public class ChildItem { public string Name { get; set; } public int Age { get; set; } } public class ListItem { public string Name { get; set; } public int Age { get; set; } } public class ItemList { public List Names { get; set; } } public class InterItem : IFlatObject { public string Name { get; set; } public int Age { get; set; } public void AttachFlatObject(FlatObject flatObject, string prefix, PickSetting setting) { prefix = prefix ?? typeof(InterItem).FullName ; flatObject.AddValue(prefix + ".Name", Name); } } public class ConvertTestItem { [IgnoreFlatProperty] public string FirstName { get; set; } public string LastName { get; set; } [FlatProperty(ConverterType =typeof(TestConverter))] public string Age { get; set; } } public class ConvertTestItem2 { public string FirstName { get; set; } public string LastName { get; set; } public string Age { get; set; } } public static class CompareItemTest { public static void Test() { PickSetting setting = new PickSetting() {Level = 2}; CompareItem item1 = new CompareItem() {Name = "213", Age = 5}; item1.Child = new ChildItem(){Name="Child",Age=29}; var flag = FlatObject.Create(item1, setting); item1.Child.Age = 30; var flag2= FlatObject.Create(item1, setting); var test1=(bool)flag.Compare(flag2); Trace.WriteLineIf(test1, "test1测试错误");//level是1的时候相等 var flagInt1 = FlatObject.Create(1); var flagInt2 = FlatObject.Create(1); var test2= (bool)flagInt1.Compare(flagInt2); Trace.WriteLineIf(test2 == false, "test2测试错误"); PickSetting listSetting = new PickSetting() { Level = 1,ParseEnumerableObject=true }; List list1 = new List() {"a", "b"}; List list2 = new List() { "a", "b" }; var flagList1 = FlatObject.Create(list1, listSetting); var flagList2 = FlatObject.Create(list2, listSetting); var test3 = (bool)flagList1.Compare(flagList2); Trace.WriteLineIf(test3 == false, "test3测试错误"); List listItems1 = new List() {new ListItem() {Name = "cc", Age = 23}}; List listItems2 = new List() { new ListItem() { Name = "cc", Age = 23 } }; var flaglistItems1 = FlatObject.Create(listItems1, listSetting); var flaglistItems2 = FlatObject.Create(listItems2, listSetting); var test4 = (bool)flaglistItems2.Compare(flaglistItems1); Trace.WriteLineIf(test4, "test4测试错误");//解析1层不等,解析两层相等 PickSetting listSetting2 = new PickSetting() { Level =2, ParseEnumerableObject = true }; ItemList itemList1 = new ItemList() {Names = new List() {"CC","BB"}}; ItemList itemList2 = new ItemList() {Names = new List() {"CC","BB1"}}; var flagitemList1 = FlatObject.Create(itemList1, listSetting2); var flagitemList2 = FlatObject.Create(itemList2, listSetting2); var test5 = (bool)flagitemList2.Compare(flagitemList1); Trace.WriteLineIf(test5, "test5测试错误"); InterItem interItem1 = new InterItem() { Name = "23123" }; InterItem interItem2 = new InterItem() { Name = "13313" }; var flaginterItem1 = FlatObject.Create(interItem1, listSetting2); var flaginterItem2 = FlatObject.Create(interItem2, listSetting2); var test6 = (bool)flaginterItem1.Compare(flaginterItem2); Trace.WriteLineIf(test6, "test6测试错误"); var converter = typeof(TestConverter).CreateByDefault(); ConvertTestItem convertItem = new ConvertTestItem() { FirstName = "First", LastName = "Last", Age = "cc" }; var flagconvertItem1 = FlatObject.Create(convertItem); var converterSettings= new PickSetting(); converterSettings.Converters.Add(new TestConverter2()); ConvertTestItem2 convertItem2 = new ConvertTestItem2() { FirstName = "First", LastName = "Last", Age = "cc" }; var flagconvertItem2 = FlatObject.Create(convertItem2, converterSettings); } } }