2015-09-08 18 views
10

Tôi đang cố gắng làm cho ứng dụng của mình (dành cho Windows 10) hoạt động trong .NET gốc..net gốc enum.GetValues ​​gặp sự cố

Tôi gặp vấn đề sau: Enum.GetValues không thành công khi chạy với siêu dữ liệu bị thiếu. Tôi quản lý để đơn giản hóa trường hợp thử nghiệm cho vấn đề này (trong cuộc sống thực mã của tôi trông khác nhau). Trong thư viện di động tôi có:

public enum enumValues 
{   
    A1,  
    B1,   
    C1, 
} 

public class fff 
{ 
    public static object GetClass2Value() 
    { 
     return enumValues.B1; 
    } 
} 

trong ứng dụng toàn cầu Windows của tôi tôi gọi đoạn mã sau:

Array aaa = Enum.GetValues(fff.GetClass2Value().GetType()); 

tôi nhận được ngoại lệ sau đây:

thông tin bổ sung: 'enumlibportable.enumValues [] 'thiếu siêu dữ liệu.

Vấn đề là tôi không biết nên thêm gì vào Default.rd.xml. Tôi đã cố gắng để thêm các chuỗi thứ khác nhau (enum subtype, enumValues ​​lớp, enumValues ​​[] vv) bằng cách sử dụng công cụ microsoft http://go.microsoft.com/fwlink/?LinkID=392859, nhưng không có may mắn.

CẬP NHẬT: Tôi biết rằng đoạn mã sau sẽ làm việc cho testcase tôi Enum.GetValues(typeof(enumValue)), nhưng tôi không thể sử dụng nó trong dự án thật của tôi kể từ khi tôi không biết kiểu enum chính xác trong dự án thật của tôi.

+0

tôi giả sử mã thực là một trường hợp subclassing/interface? Bạn có thể vui lòng giải thích về điều đó một chút không? – Nyerguds

+0

Vâng, quá dài để giải thích dự án thực sự của tôi, đó là lý do tại sao tôi dành rất nhiều thời gian tìm ra nguyên nhân của vấn đề và chuẩn bị mẫu. Tôi đã mô tả đủ vấn đề của tôi. Vấn đề là tối ưu hóa xóa siêu dữ liệu enum vì nó không được tham chiếu trong ứng dụng một cách rõ ràng. Tôi cần phải nói với trình biên dịch không xóa siêu dữ liệu này. –

+0

Bạn không thể tạo kiểu trả về chung? – Herdo

Trả lời

0

Có thể bạn có thể thử điều này có thể giúp bạn

Array aaa = (enumValues) Enum.Parse(typeof(enumValues), fff.GetClass2Value()); 
+0

Trong dự án thực sự của tôi, tôi không biết loại chính xác và nó có thể là loại enum khác nhau, tôi không thể sử dụng phương pháp này, thật không may. Và đây không phải là một giải pháp thích hợp, tôi nghĩ vậy. Nếu tôi thêm một số enum mới, tôi sẽ phải thêm workaround này cho mỗi enum. Điều này nên được thực hiện bằng cách nào đó thông qua các định nghĩa thời gian chạy. –

5

Nó không có ý nghĩa với tôi, nhưng chuỗi RD sau làm việc cho testcase của tôi:

<Type Name="enumlibportable.enumValues[]" Browse="Required All"/> 
+0

Một điều hữu ích là sử dụng chỉ thị quá hào phóng: . Điều này sẽ làm cho tất cả các loại trong ứng dụng của bạn có đủ thông tin để phản ánh kiểu này sẽ hoạt động. Nó hoạt động rất tốt, nó được bao gồm trong mẫu UWP trống trong Properties \ Default.rd.xml! HTH –

+0

Tôi tìm thấy dòng này trong dự án của tôi, nó đã có và nó không hoạt động trong trường hợp của tôi. Tôi nghi ngờ đây là một lỗi trong. –

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