发现这个,但不确定如何打电话,所以我可以去

时间:2013-12-02 10:29:02

标签: c# winforms entity-framework

如何正确使用此功能我在没有说明的情况下在堆栈上找到它

我宣称它为var db = DeepCopy(absenceEntity); 但我如何访问absenceEntity中的属性,以便显示原始值。

我试图在调用savechanges之前将一个值的副本存储到存储中,这是一种更简单的方法来执行此操作以进行审计跟踪

public static object DeepCopy(object obj)
{
    if (obj == null)
        return null;
    Type type = obj.GetType();

    if (type.IsValueType || type == typeof(string))
    {
        return obj;
    }
    else if (type.IsArray)
    {
        Type elementType = Type.GetType(type.FullName.Replace("[]", string.Empty));
        var array = obj as Array;
        Array copied = Array.CreateInstance(elementType, array.Length);
        for (int i = 0; i < array.Length; i++)
        {
            copied.SetValue(DeepCopy(array.GetValue(i)), i);
        }
        return Convert.ChangeType(copied, obj.GetType());
    }
    else if (type.IsClass)
    {
        object toret = Activator.CreateInstance(obj.GetType());
        FieldInfo[] fields = type.GetFields(BindingFlags.Public |
        BindingFlags.NonPublic | BindingFlags.Instance);
        foreach (FieldInfo field in fields)
        {
            object fieldValue = field.GetValue(obj);
            if (fieldValue == null)
                continue;
            field.SetValue(toret, DeepCopy(fieldValue));
        }
        return toret;
    }
    else
        throw new ArgumentException("Unknown type");
}

1 个答案:

答案 0 :(得分:0)

在传入之前访问missingEntity上的属性,或者只是

var _absenceEntity = DeepCopy(absenceEntity);   

然后

_absenceEntity.(specify propperty here)