C# c语言中两个对象的打印变化#

C# c语言中两个对象的打印变化#,c#,asp.net,c#-4.0,C#,Asp.net,C# 4.0,如何在asp.net中打印两个相同对象的更改?例如,我有两个类型为car的对象,它们的属性发生了一些变化。我想向用户展示,在web视图的对象中,属性的实际变化是什么。是否有任何内置的东西或开源?我的对象也可以嵌套,就像汽车对象可以在其中包含一些其他属性的驱动程序列表一样。我不知道有现成的组件可以做到这一点,但是,您可以非常轻松地遍历对象的成员-这里有一些代码作为单元测试的一部分比较对象-您需要用一些字符串格式替换Assert.AreEquals调用,或者可能建立一个描述差异的对象列表,然后以适合

如何在asp.net中打印两个相同对象的更改?例如,我有两个类型为car的对象,它们的属性发生了一些变化。我想向用户展示,在web视图的对象中,属性的实际变化是什么。是否有任何内置的东西或开源?我的对象也可以嵌套,就像汽车对象可以在其中包含一些其他属性的驱动程序列表一样。

我不知道有现成的组件可以做到这一点,但是,您可以非常轻松地遍历对象的成员-这里有一些代码作为单元测试的一部分比较对象-您需要用一些字符串格式替换
Assert.AreEqual
s调用,或者可能建立一个描述差异的对象列表,然后以适合您的站点的方式将它们呈现为HTML

public static void CompareObjects(object expected, object actual)
{
    foreach (PropertyInfo propertyInfo in expected.GetType().GetProperties())
    {
        var expectedValue = propertyInfo.GetValue(expected, null);
        var actualValue = propertyInfo.GetValue(actual, null);
        Assert.AreEqual(expectedValue, actualValue, "Comparing property " + propertyInfo.Name);
    }

    foreach (FieldInfo fieldInfo in expected.GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic))
    {
        Assert.AreEqual(fieldInfo.GetValue(expected), fieldInfo.GetValue(actual), "Comparing field " + fieldInfo.Name);
    }
}
“我的对象可以嵌套”——这就是为什么没有预先制定的解决方案。要做到这一点是不可能的,除非您专门编写了要比较的代码。任何对象都可以引用任何其他对象。最终可能会读取应用程序中的每个对象,具体取决于从何处开始。