2013-09-23 31 views
8

Tôi muốn sử dụng .settings tập tin cấu hình để lưu struct này:thêm loại tùy chỉnh trong Settings.settings

struct sR22Protocole 
{ 
    Int32 inputkey; 
    Int32 outputkey; 
    Int32 voltage; 
    Int32 Ohm; 
    Int32 Correction; 
}; 

Trong nhà thiết kế thiết lập, tôi có thể thêm loại khác nhau nhưng nó không hiển thị struct của tôi trong phần duyệt. Có cách nào mà nhà thiết kế có quyền truy cập vào cấu trúc của tôi không? Nếu không, có cách nào để thêm chương trình đó không?

Trả lời

6

Tôi tin rằng lớp (hoặc struct?) Phải có khả năng được tuần tự hóa để sử dụng trong tệp cài đặt. Tôi đi theo bài viết trên blog này khi tôi đã làm điều này cho một đối tượng mặc định trong một ứng dụng:

http://www.blackwasp.co.uk/CustomAppSettings.aspx

4

Chỉ cần đi vào phần trình duyệt và gõ struct, lớp hoặc enum tên của bạn trong khi đặt trước từ đó bởi không gian tên của loại hình của bạn . Sau đó, nó cũng sẽ được thêm vào trong danh sách thả xuống cho các lần sử dụng tiếp theo của bạn.

Trong ví dụ của bạn: YourTypeNamespace.sR22Protocole

+0

Bạn có thể giải thích thêm một chút không? –

+0

Bạn đang sử dụng phiên bản Visual Studio nào? Tôi chỉ cố gắng này trên VS2013 Express với một enum và nó đã không làm việc. (Nó cho biết lỗi "Loại 'X' không được xác định".) – jmbpiano

+0

Nó hoạt động với VS 2010 Express và loại enum tùy chỉnh. – Pollitzer

4

loại của bạn phải có một thuộc tính SettingsSerializeAs(). Một tham số enum loại SettingsSerializeAs quy định cụ thể như thế nào giá trị sẽ được tuần tự, các giá trị có thể là:

  • Chuỗi
  • Xml
  • Binary
  • ProviderSpecific

Kể từ khi thuộc tính này chỉ có thể là áp dụng cho các loại lớp, loại của riêng bạn phải là một lớp.

Thứ hai, loại phải có hàm tạo tham số. Điều này là do nếu không có giá trị nào được chỉ định cho cài đặt trong tệp App.config, giá trị mặc định của loại cài đặt sẽ được gán cho cài đặt.

Nếu bạn vừa khai báo lớp học của bạn, nhà thiết kế sẽ không chấp nhận loại trừ khi bạn đã xây dựng giải pháp của mình.

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