namespace UVC.Data.Core { /// /// 서로 다른 JSON 데이터 구조 간에 매핑 기능을 제공하는 클래스입니다. /// /// /// ... /// 이 클래스는 IDataObject 인터페이스를 구현한 DataObject와 DataArray로 /// 데이터를 변환하여 통일된 방식으로 접근할 수 있도록 합니다. /// public interface IDataObject { /// /// 모든 프로퍼티를 변경된 것으로 표시합니다. /// 전체 데이터가 갱신되었을 때 사용합니다. /// public void MarkAllAsUpdated(); /// /// 다른 DataObject와 현재 객체를 비교하여 다른 부분만 설정합니다. /// 변경된 키는 자동으로 추적됩니다. /// /// 비교할 DataObject /// true로 설정하면, 다른 속성만 업데이트합니다. false로 설정하면, 모든 속성을 덮어씁니다. public void UpdateDifferent(IDataObject other, bool updatedDataOnly); /// /// 업데이트된 속성만 포함하는 새로운 DataObject를 반환합니다. /// /// 객체 풀에서 복제할지 여부를 지정합니다. 기본값은 true입니다. /// 업데이트 된 항목만 가지고 있는 DataObject public IDataObject GetUpdatedObject(bool fromPool = true); /// /// 업데이트 된 속성의 수. /// /// 업데이트된 속성의 총 개수입니다. 업데이트된 속성이 없으면 0을 반환합니다. public int UpdatedCount { get; } /// /// 동일한 상태와 값을 가진 현재 데이터 객체의 새 인스턴스를 생성합니다. /// /// 복제된 객체는 원본 객체와 독립적이므로, 한 객체를 변경해도 다른 객체에는 영향을 미치지 않습니다. /// /// 객체 풀에서 복제할지 여부를 지정합니다. 기본값은 true입니다. /// 현재 객체의 복사본인 새 인스턴스를 반환합니다. public IDataObject Clone(bool fromPool = true); /// /// 재사용을 위해 객체를 풀로 반환합니다. /// /// 객체가 더 이상 필요하지 않을 때 이 메서드를 호출하여 /// 풀에서 재사용할 수 있도록 해야 합니다. 객체를 풀로 반환하기 전에 객체가 유효한 상태인지 확인하십시오. public void ReturnToPool(); /// /// 업데이트가 즉시 적용되어야 하는지 여부를 나타냅니다. /// /// public bool IsUpdateImmediately { get; set; } } }