나는 하나의 부모로부터 유래 된 많은 개체 군을 가지고 있습니다. 객체는 모두 수정되었는지 알 수있는 방법을 알고 있지만 객체의 새 인스턴스가 이미 메모리에있는 인스턴스와 비교하여 수정되었는지 확인할 수 있어야합니다 (다른 사용자가 데이터베이스를 업데이트했는지 확인하기 위해 테스트하기 . 개체를 편집하는 동안)추상 함수 및 데이터 유형 -이를 수행하는 우아한 방법이 있습니까?
결과는 모든 자식 클래스는 동일한 방법을 포함한다는 것이다 :
public new bool Changed()
{
return Changed(this);
}
이 정말 내 밥통에 스틱을하지만 실제 작업으로 주위에 방법을 볼 수 없습니다 클래스와 동일한 유형의 매개 변수를 취하는 함수에 의해 완료되어야합니다. —에 있으므로 가상 일 수 없습니다. (물론, 부모를 가져 와서 매번 캐스팅하도록 정의 할 수는 있지만, 비교 함수가 올바른 객체가 아닌 트리의 객체를 받아들이게하고, 각 인스턴스의 가드 코드가 필요합니다.
물론이 작동하지만 추한 코드를 싫어합니다.
업데이트 : Changed
함수의 경우 각 개체는로드 될 때 해당 상태의 복사본을 유지합니다.
아마도 당신은 당신의'Changed()'를 좀 더 상세하게 설명 할 수 있습니다. 내 예제를 조정할 수있다. – skarmats
'Changed (SomeDerivedType o)'가 각각의 파생 클래스에 구현되어 있는가? 기본 클래스와 파생 클래스의 예제가있는 몇 줄은 정말 도움이 될 것입니다 :-) 나는 밤이라고 부를 것입니다. – skarmats
@skarmats : 당신은 각 파생 클래스가 Changed (<자신의 타입> o). 각 필드는 자신의 필드를 검사하고 부모 필드를 확인하기 위해 기준을 호출합니다. –