2011-12-23 35 views
9

Tôi sử dụng cài đặt tích hợp do Visual Studio cung cấp để lưu các cài đặt ứng dụng đơn giản. Cho đến bây giờ, tôi đã truy cập này trong ứng dụng của tôi bằng cách sử dụng quy ước:using Properties.Settings for application settings

Properties.Settings.Default.MySetting 

Và sau đó gọi các phương thức như Save bằng cách sử dụng:

Properties.Settings.Default.Save() 

Tuy nhiên, ai đó vừa nói với tôi rằng đó là chính xác hơn để truy cập vào các thuộc tính bằng cách tạo ra một biến thành viên như thế này:

private Properties.Settings settings = new Properties.Settings() 

và sau đó sử dụng các thành viên settings để truy cập các thuộc tính và phương pháp như:

settings.MySetting 
settings.Save() 

Tôi mơ hồ nhớ lại rằng họ đã chứng minh điều này bằng cách mô tả sự khác biệt về cách cài đặt được lưu trữ trong khu vực của người dùng.

Có ai có thể xác nhận hoặc cung cấp thêm chi tiết về sự khác biệt không? Cảm ơn nhiều.

Trả lời

10

Settings.Default được khởi tạo như sau:

private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 

Vì vậy, nó gần như giống nhau như thủ công tạo ra một thể hiện của Settings, ngoại trừ một cung cấp bởi Settings.Default là một trường hợp đồng bộ. Tôi không thể thấy bất kỳ lý do chính đáng nào để tạo một thể hiện của Settings theo cách thủ công ...

4

Điều này đã lãng phí rất nhiều thời gian của tôi.

[MyAppNameSpace].Properties.Settings.Default.Save(); 

Không chắc chắn khi bạn có thể bỏ không gian tên như trên nhưng trong wpf trong mã app.xaml.cs Tôi cần xác định không gian tên để biên dịch.

+1

Cảm ơn bạn cảm ơn! Điều này đã cứu tôi rất nhiều thời gian! Buồn cười như thế nào tôi là người đầu tiên mà điều này đã giúp sau 2,5 năm! Điều này cũng làm việc trong app.xaml.cs – mdiehl13

+0

Đã lưu tôi! Nó làm việc mà không có không gian tên cho đến khi tôi chuyển nó đến App.xaml.cs, sau đó có "bộ khởi tạo trường không thể tham chiếu đến trường không tĩnh". Có vẻ như có một thành viên 'Properties' trong lớp' Application' mà nó không rõ ràng. – Vimes