각 필드를 수동으로 설정하지 않고 개체의 얕은 복사본 (새 인스턴스)을 만들려고합니다. 이 개체는 수정할 수있는 유형이 아니므로 개체에 들어가서 ICloneable을 구현할 수는 없습니다 ... 조금 붙어 있습니다. 단순히 객체를 복제하는 쉬운 방법이 있습니까? 아니면 각 객체를 새로운 객체에 복사하는 Clone() 메소드를 구현해야합니까?추가 할 수없는 개체 복제 ICloneable
미리 도움을 청하십시오!
각 필드를 수동으로 설정하지 않고 개체의 얕은 복사본 (새 인스턴스)을 만들려고합니다. 이 개체는 수정할 수있는 유형이 아니므로 개체에 들어가서 ICloneable을 구현할 수는 없습니다 ... 조금 붙어 있습니다. 단순히 객체를 복제하는 쉬운 방법이 있습니까? 아니면 각 객체를 새로운 객체에 복사하는 Clone() 메소드를 구현해야합니까?추가 할 수없는 개체 복제 ICloneable
미리 도움을 청하십시오!
리플렉션을 사용하여 개체의 필드를보고이를 사용하여 새 인스턴스를 채 웁니다.
이것은 인수가없는 생성자의 존재에 대해 몇 가지 가정을합니다.
Type t = typeof(typeToClone);
var fields = t.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
var copy = Activator.CreateInstance(t);
for(int i = 0; i < fields.Length; i++)
fields[i].SetValue(copy, fields[i].GetValue(existing));
그 트릭을 ... 고마워! – MattW
는 object.MemberwiseClone이 작동 AutoMapper @ http://automapper.codeplex.com/ – Chandu
에서보세요? http://msdn.microsoft.com/en-us/library/system.object.memberwiseclone.aspx – cadrell0
개체 (클래스 파일)를 편집 할 수 있었다면 복제하려면 예, 그러나이 개체는 3 번째 개체입니다. 파티 DLL을, 그리고 내가 뭔가를 놓치지 않는 한 MemberwiseClone() 호출하는 기능을 추가 할 수있는 액세스 권한이 없습니다. – MattW