2010-07-29 36 views
10

Tôi có nhiều phiên bản .NET cần thiết để chia sẻ các cài đặt người dùng chung, chẳng hạn như tùy chọn, tên người dùng, v.v. Một là một ứng dụng WPF, một ứng dụng khác là ứng dụng bàn điều khiển và thứ ba là Office Add -trong. Tất cả các cài đặt này đều là phạm vi người dùng.Cài đặt chia sẻ giữa các ứng dụng

Chỉ ứng dụng WPF mới có thể thay đổi cài đặt. Phần còn lại chỉ đọc chúng.

Lý tưởng nhất, tôi muốn sử dụng khung cấu hình .NET. Tôi không chắc chắn làm thế nào để làm điều này mặc dù. Nếu tôi thêm Cài đặt vào ứng dụng WPF, làm thế nào các ứng dụng khác có thể tìm thấy tệp user.config?

Có dễ dàng hơn khi tạo thư viện lớp và sử dụng IsolatedFileStorage và tuần tự hóa cài đặt của tôi không?

Mọi lời khuyên sẽ được đánh giá cao.

Trả lời

0

Tôi khuyên bạn nên tạo dịch vụ để cung cấp và cập nhật thông tin người dùng và tùy chọn. Nó sẽ là kiến ​​trúc tốt hơn, giải pháp sạch hơn và nó sẽ dễ dàng hơn để duy trì và mở rộng.

1

Bạn có thể triển khai lớp cài đặt tùy chỉnh của mình, kế thừa ApplicationSettingsBase. Là một khởi đầu tốt, bạn có thể thêm tệp Cài đặt người dùng mặc định vào dự án mẫu (Nhấp chuột phải vào dự án ->Properties ->Settings ->This project does not contain a default settings file. Click here to create one.). Thêm một thiết lập phạm vi người dùng và điều tra cấu trúc của nhà thiết kế tạo Settings.Designer.cs file:

namespace ConsoleApplication1.Properties { 


    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 

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

     public static Settings Default { 
      get { 
       return defaultInstance; 
      } 
     } 

     [global::System.Configuration.UserScopedSettingAttribute()] 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 
     [global::System.Configuration.DefaultSettingValueAttribute("John Doe")] 
     public string Name { 
      get { 
       return ((string)(this["Name"])); 
      } 
      set { 
       this["Name"] = value; 
      } 
     } 
    } 
} 

Thực hiện tùy chỉnh của bạn, bạn sẽ không được giới hạn ở những bổ truy cập nhà thiết kế tạo ra, vì vậy bạn có thể thực hiện các lớp cài đặt như nội bộ với setters nội bộ, chỉ hiển thị cho các hội đồng cần thiết, hoặc bất cứ điều gì phù hợp với nhu cầu của bạn.

Tất nhiên, bạn luôn có thể triển khai cơ chế serialize/deserialize tùy chỉnh của mình, nhưng bạn sẽ mất tính năng funcionality được cung cấp bởi các phương thức Updgrade, Reload và Reset của ApplicationSettingsBase. Nếu bạn không cần bất kỳ thứ gì trong số này, đây có thể là cách tiếp cận sạch hơn.

Các vấn đề liên quan