如何正确使用此功能我在没有说明的情况下在堆栈上找到它
我宣称它为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");
}
答案 0 :(得分:0)
在传入之前访问missingEntity上的属性,或者只是
var _absenceEntity = DeepCopy(absenceEntity);
然后
_absenceEntity.(specify propperty here)