이 인터페이스는 직렬화 된 인스턴스와 모든 클래스에서 구현해야합니다. 클래스가 자체적으로 직렬화 및 직렬화 해제를 제어하려는 경우 ISerializable 인터페이스를 사용하십시오.
GetObjectData()를 사용하면 직렬화 프로세스를 제어 할 수 있습니다.
GetDataObject은, 어떤 당신은 하여 SerializationInfo 개체와 StreamingContext 객체를 전달합니다. GetDataObject 메서드는 대상 개체의 직렬화에 필요한 데이터로 SerializationInfo 개체 을 채 웁니다.
예 :
public Employee(SerializationInfo info, StreamingContext ctxt)
{
//Get the values from info and assign them to the appropriate properties
EmpId = (int)info.GetValue("EmployeeId", typeof(int));
EmpName = (String)info.GetValue("EmployeeName", typeof(string));
}
public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
{
//You can use any custom name for your name-value pair. But make sure you
// read the values with the same name. For ex:- If you write EmpId as "EmployeeId"
// then you should read the same with "EmployeeId"
info.AddValue("EmployeeId", EmpId);
info.AddValue("EmployeeName", EmpName);
}
위의 예제는 어떻게 직렬화 및 직렬화하는 방법을 보여줍니다. 보시다시피 GetObjectData는 deserialize해야합니다. 당신이 그것을 비워두면, 당신의 목표는 욕망의 가치를 가지지 못할 것입니다.
내가하려고하는 것은이 접근법을 사용하여 복제를 수행하는 것입니다. http://stackoverflow.com/questions/78536/cloning-objects-in-c. 모든 GetObjectData 메서드를 정의해야한다면 내 자신의 Clone 메서드를 정의하는 것이 좋습니다. – 5YrsLaterDBA
클래스 위에 [Serializable] 태그를 추가하기 만하면됩니다. 이 방법은 객체를 직렬화 할 수 있습니다. 나에게 보낸 링크에서와 같이 Clone() 메소드를 사용하면 비즈니스에 있어야합니다. –
코드 및 기타 텍스트가 "GetObjectData"인 반면, blockquote는 "GetDataObject"를 사용합니다. 이 두 가지 별도의 메소드입니까, 아니면 그냥 오타입니까? –