C#의 클래스 B에서 상속받은 클래스 A가 있다고 가정 해 보겠습니다. 클래스 B에는 Checksum이라는 속성이 있습니다.이 속성은 런타임에 호출 될 때 클래스 A의 인스턴스에있는 모든 속성의 체크섬을 계산합니다 (사용되는 특정 체크섬 알고리즘은 BCL에서 중요하지 않음).메모리의 체크섬 객체
중요하게도 체크섬 알고리즘은 체크섬 속성을 무시해야하며 그렇지 않으면 체크섬 값이 변경 될 때 나중에 확인 될 때 실패합니다.
1), 반사를 사용하여 객체의 이상 모든 공용 속성을 반복 문자열 및 체크섬이에 연결할 :
그래서, 지금까지의 내가 그것을 볼 수있는 두 가지 옵션이 있습니다.
2) 객체가 단순히 인접한 주소의 묶음 인 것처럼 가정하고 바이트 배열 및 체크섬으로 처리합니다.
1 - 느린 소리 2 - 소리가 들리지 않습니다. 체크섬 자체를 나타내는 문자열을 무시하는 방법이나 다른 개체에 대한 참조를 처리하는 방법이 확실하지 않습니다.
누구나 1보다 나은 아이디어를 가지고 있습니까?이 두 가지 솔루션 중 더 나은 것으로 들리십니까?
위의 (1)을 약간 더 우아하게 구현 한 것처럼 들리지만 essentailly 동일합니다. 직렬화가 내부적으로 반사를 사용하고 상대적으로 느리다는 것을 이해합니다. 다른 "소설"솔루션이 제안되지 않는다면, 나는 이것을 이것을 할 수있는 방법이라고 생각할 것입니다. –
@Colin 빨리 만들 수 있습니다. http://codebetter.com/blogs/gregyoung/archive/2008/08/24/fast-serialization.aspx – Giorgi
링크를 올바르게 이해하면이 "고속 시리얼 라이저"를 사용하면 각 유형에 대해 수동 직렬화 메소드를 구현하십시오. OP가 체크섬 만 원할 경우 각 유형에 대한 사용자 정의 체크섬 메소드를 작성하는 것이 더 간단하지 않습니까? (좋은 링크!) – Niki