Cách giải quyết mặc định là sử dụng các tệp cài đặt. Vấn đề với tệp cài đặt là bạn phải xác định tất cả cài đặt và tự viết mã sao chép dữ liệu qua lại. Khá tẻ nhạt nếu bạn có rất nhiều tài sản để theo dõi.
Tôi đã tạo một thư viện khá linh hoạt và rất dễ sử dụng cho việc này, bạn chỉ cần cho nó biết thuộc tính nào của đối tượng nào cần theo dõi và nó thực hiện phần còn lại. Bạn cũng có thể định cấu hình nó nếu bạn muốn.
Thư viện có tên là Jot (github) , đây là một bài viết CodeProject cũ mà tôi đã viết về nó.
Đây là cách bạn sử dụng nó để theo dõi kích thước và vị trí của cửa sổ:
public MainWindow()
{
InitializeComponent();
_stateTracker.Configure(this)
.IdentifyAs("MyMainWindow")
.AddProperties(nameof(Height), nameof(Width), nameof(Left), nameof(Top), nameof(WindowState))
.RegisterPersistTrigger(nameof(Closed))
.Apply();
}
Jot so với các tập tin cài đặt: Với Jot, có ít mã hơn đáng kể và nó ít bị lỗi hơn rất nhiều vì bạn chỉ cần đề cập đến từng thuộc tính một lần . Với các tệp cài đặt, bạn cần đề cập đến từng thuộc tính 5 lần : một lần khi bạn tạo thuộc tính rõ ràng và thêm bốn lần trong mã sao chép các giá trị qua lại.
Lưu trữ, tuần tự hóa, v.v. hoàn toàn có thể định cấu hình. Ngoài ra, khi sử dụng IOC, bạn thậm chí có thể kết nối nó để nó áp dụng theo dõi tự động cho tất cả các đối tượng mà nó giải quyết để tất cả những gì bạn cần làm để làm cho thuộc tính trở nên bền bỉ là gắn thuộc tính [Trackable] vào nó.
Tôi đang viết tất cả những điều này bởi vì tôi nghĩ rằng thư viện là hàng đầu và tôi muốn nói về nó.