小编nad*_*adz的帖子

在C#中找到两个对象之间的差异

我正在寻找一种方法来获得对象的两个实例之间的差异.我编写的以下函数使用反射来实现手头的目的,但我想更多地增强它,以便它可以跳过具有特定数据注释的某些字段.例如,在实体框架模型中使用的'[NotMapped]和[JsonIgnore]'注释

    public static List<ChangeSet> GetVariances<T>(this T previous, T updated)
    {
        List<ChangeSet> changeSet = new List<ChangeSet>();
        try
        {
            string[] excludedFields = { "Id", "DateCreated", "DateModified" };
            Type entityType = previous.GetType();
            FieldInfo[] fieldInfo = entityType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);
            foreach (FieldInfo x in fieldInfo)
            {
                if (!excludedFields.Any(z => x.Name.Contains(z))){
                    ChangeSet change = new ChangeSet
                    {
                        Field = x.Name,
                        PreviousValue = x.GetValue(previous),
                        UpdatedValue = x.GetValue(updated)
                    };
                    if (!Equals(change.PreviousValue, change.UpdatedValue))
                        changeSet.Add(change);
                }
            }
        }
        catch (Exception ex)
        {
            var exception = ex.Message;
        }
        return …
Run Code Online (Sandbox Code Playgroud)

.net c# variance system.reflection

0
推荐指数
1
解决办法
96
查看次数

标签 统计

.net ×1

c# ×1

system.reflection ×1

variance ×1