에서 파생 객체의 딥 카피 만드는 방법 :나는 다음과 같은 수업을 목록 <T>
public partial class AuthorizationSetObject
{
public AuthorizationObjectList AuthorizationObjects { get; set; }
}
public partial class AuthorizationObject
{
public string Text { get; set; }
}
public partial class AuthorizationObjectList : List<AuthorizationObject>
{
}
지금 AuthorizationSetObject의 깊은 사본이 필요합니다. 어떻게해야합니까?
나는 이런 식으로 시도 :public static bool CopyProperties(object source, object target)
{
var customerType = target.GetType();
foreach (var prop in source.GetType().GetProperties())
{
var propGetter = prop.GetGetMethod();
if (propGetter != null)
{
PropertyInfo pi = customerType.GetProperty(prop.Name);
if (pi != null)
{
var propSetter = pi.GetSetMethod();
if (propSetter != null)
{
var valueToSet = propGetter.Invoke(source, null);
propSetter.Invoke(target, new[] { valueToSet });
}
}
}
}
return true;
}
문제는의 AuthorizationObjectList 실제 딥 카피 아니라고. 딥 복사 후에 대상에서 "텍스트"속성을 변경하면 소스의 "텍스트"가 잘 변경됩니다.
아마도 "pi.PropertyType.BaseType.IsGenericType"과 같은 구현이 필요하고 다른 작업을 수행해야하지만 ...
아무도 아이디어가 있습니까?
대단히 감사합니다. 귀하의 질문에 게시
안부
이반
http://stackoverflow.com/questions/13244161/how-to-keep-a-generic-list-unmodified-when-its-copy-is-modified/13244309#13244309 – Hardrada
딥 복사본 값 의미를 제공하지 않는 언어에서는 객체를 직렬화 한 다음 다른 객체에서 직렬화 해제해야합니다. – Alex
AuthorizationSetObject는 자체 클래스이므로 IClonable 인터페이스를 구현할 수 있습니다. –