2010-02-02 48 views
20

Nếu có một enum trong C#:Tùy chỉnh enum là kiểu cài đặt ứng dụng trong C#?

[Serializable] 
public enum OperatingSystem 
{ 
    Windows, 
    Macintosh 
} 

Đối với ứng dụng của tôi, tôi sử dụng cài đặt ứng dụng, nơi tôi có thể chọn trong số đó Loại một khung cảnh nên. Tôi nghĩ khi tôi chọn Duyệt, tôi có thể chọn enum của mình hoặc nhập đường dẫn đủ điều kiện để chọn enum đó làm Loại.

Edit:
tôi đặt kiểu để Enum của tôi, nhưng trong giá trị gia tăng (nơi Windows, Macintosh nên) chỉ dành cho Windows có thể nhìn thấy và tôi có thể nhập bất kỳ chuỗi.

+4

Vui lòng sửa pic bị thiếu. – sweetlilmre

Trả lời

31

Tôi thấy điều này trong VC# Express 2005. Hộp thoại Duyệt. "Chọn Loại" chỉ hiển thị các vùng tên Hệ thống và Microsoft. Tuy nhiên, nếu bạn chèn tên đầy đủ của loại vào hộp văn bản Loại đã chọn, nó sẽ chấp nhận nó.

+0

Nó thực sự. Nhưng các giá trị không được hiển thị hoặc chỉ hiển thị hộp văn bản có "Windows" trong đó. Nhưng tôi thậm chí có thể cho nó giá trị của "đây là một chuỗi". – MysticEarth

+1

Nó là bình thường, trong XML dữ liệu được lưu trữ dưới dạng chuỗi. Về lý thuyết bạn có thể nhập một giá trị khác hơn một trong Enum (đây là lý do tại sao Enum.IsDefined tồn tại). Nó sẽ ném một ngoại lệ nhưng bạn có thể làm điều đó :). –

+1

FYI, điều này cũng hoạt động đối với cài đặt người dùng. Tôi đã thử nó, hoạt động tuyệt vời! – MPelletier

0

Tôi không biết mình có hiểu câu hỏi của bạn hay không, nhưng khi tôi tạo custom configuration section để sử dụng tại tệp cấu hình ứng dụng của mình, tôi tạo thuộc tính enum bằng cách sử dụng TypeConverter attribute cùng với EnumConverter.

Tôi hy vọng điều đó sẽ hữu ích, nhưng hãy cho tôi biết nếu tôi hiểu câu hỏi của bạn không chính xác.

+0

Vui lòng xem chỉnh sửa của tôi để làm rõ :) – MysticEarth

+0

Tôi không có kinh nghiệm với kịch bản bạn mô tả, nhưng tôi muốn cung cấp cho các SettingsSerializeAsAttribute một cơ hội. Hãy thử áp dụng nó vào enum của bạn và vượt qua SettingsSerializeAs.String làm tham số. –

13

Chắc chắn - chỉ cần thêm enum có thể tuần tự hóa vào dự án của bạn, chọn duyệt và nhập vào tên không gian tên đủ điều kiện, ví dụ: ClassLibrary1.OperatingSystems. Chơi lô tô.

"Tôi đặt kiểu để Enum của tôi, nhưng trong Giá trị (nơi Windows, Macintosh nên được) chỉ dành cho Windows có thể nhìn thấy và tôi thể nhập bất kỳ chuỗi".

Bạn đã thử nhập nội dung nào đó không phải là 'cửa sổ' hoặc 'macintosh'? Hành vi bạn thấy gần với những gì bạn muốn như bạn sẽ nhận được. Tôi khá tự tin về điều đó.

Trong mọi trường hợp ... chúc may mắn.

Xem số done in 30 seconds tại đây.

+0

Như bạn thấy trong bài viết của tôi, tôi đã có một enum serializable. Đó là vấn đề :) – MysticEarth

+0

vấn đề là gì? đó là gần như bạn sẽ nhận được. ;-) –

+0

Yêu thích màn hình. Thấy nó giúp trả lời các câu hỏi tiếp theo của tôi. – Mike

15

Bổ sung nhỏ cho tất cả các câu trả lời trước đó. Đối với tôi - nó là cần thiết để BUILD giải pháp trước khi enum tùy chỉnh của tôi đã được thêm thành công vào hộp văn bản "Loại tùy chỉnh".

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