2009-10-28 13 views
9

Khi biên dịch giải pháp của tôi, tôi nhận được nhiều cảnh báo các nội dung sau:'Mảng như các đối số thuộc tính không phải là CLS-compliant' cảnh báo, nhưng không có thông tin loại nhất định

warning CS3016: Arrays as attribute arguments is not CLS-compliant 

Không có thông tin khác về những gì loại là không phù hợp được đưa ra. Trong các dự án của tôi, tôi có một số thuộc tính lấy tham số mảng params trong các hàm tạo của chúng, nhưng chúng đều là nội bộ, và điều đó không ảnh hưởng đến sự tuân thủ CLS. Tại sao cảnh báo này được đưa ra và loại nào được đưa ra?

+1

Bạn có tìm thấy một cách dễ dàng để tìm ra nơi cảnh báo đã được gây ra không? – jamiebarrow

Trả lời

6

CS3016.

Nếu bạn có thuộc tính nhận mảng làm đối số và dự án được đánh dấu là CLSCompliant bạn sẽ nhận được cảnh báo này.

+3

Nhưng thuộc tính là nội bộ để lắp ráp - không thể truy cập công khai. Điều đó không ảnh hưởng đến việc tuân thủ CLS. – thecoop

3

Tôi đã gặp phải điều này ngày hôm nay. Tôi đã có 4 trường hợp cảnh báo hiển thị. Sau đó tôi thấy rằng tôi đã có thuộc tính trang trí 4 phương pháp công cộng trong hội đồng đó. Khi tôi gỡ bỏ từng cái một, các lỗi đã biến mất từng cái một.

Ngoài ra, nếu bạn không đồng ý với CLS, bạn có thể đặt [CLSCompliant (false)] trên các phương thức được trang trí với thuộc tính (hoặc lớp mà phương thức được xác định). Đặt nó vào constructor thuộc tính vi phạm/class không làm các trick. Tôi đoán điều này có ý nghĩa vì cuối cùng thuộc tính có thể được tiếp xúc bên ngoài hội đồng như là một phần của siêu dữ liệu của phương thức công khai.

+4

Ngoài ra, nếu bạn không đồng ý với CLS, bạn có thể đặt [CLSCompliant (false)] trên các phương thức được trang trí với thuộc tính (hoặc lớp mà trên đó các phương thức được định nghĩa). Đặt nó vào constructor thuộc tính vi phạm/class không làm các trick. Tôi đoán điều này có ý nghĩa vì cuối cùng thuộc tính có thể được tiếp xúc bên ngoài hội đồng như là một phần của siêu dữ liệu của phương thức công khai. – Brent

0

Tôi chạy vào cùng một vấn đề, và những gì tôi phải làm là sử dụng "Tìm trong Files" hộp thoại trong VS2010 chọn Use: ký tự đại diện và trong trường Find what: hộp văn bản, nhập

\[*\(*\)\] 

Điều đó tạo ra một danh sách tất cả các cá thể thuộc tính. Đã từng người một và tôi đã có thể xác định và sửa chữa các cảnh báo.

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