2013-07-08 41 views
10

Tôi có một tập hợp xác định các thuộc tính tích hợp (như System.Runtime.Serialization.SerializableAttribute) mà tôi muốn áp dụng cho một bộ sưu tập nào đó của lớpC bộ sưu tập # thuộc tính

Có thể kết hợp những đặc tính đó thành một ? Tôi không muốn áp dụng tất cả chúng cho tất cả các lớp học của tôi một cách rõ ràng (bộ sưu tập attibute có thể thay đổi trong quá trình phát triển)

Điều tôi muốn là một thuộc tính, ví dụ:

public class MyClassAttribute: System.Attribute { ... } 

mà tôi có thể áp dụng một cách dễ dàng đến các lớp học của tôi

[MyClass] 
public class SampleClass { ... } 

và có thể gây ra SampleClass có thuộc tính Serializable và những người khác. Cảm ơn

+0

Có thể là ứng cử viên tốt cho [PostSharp] (http://www.postsharp.net/)? –

Trả lời

0

Tôi không nghĩ rằng nó có thể ra khỏi hộp, nhưng bạn có thể sử dụng Mono.Cecil để sửa đổi các loại trong hội đồng của bạn trong một bước sau xây dựng, loại bỏ thuộc tính bộ sưu tập của bạn và thêm những người khác.

8

Không, về cơ bản không. Trên thực tế, [Serializable]đặc biệt là đáng lưu ý vì nó có cách xử lý khác nhau trong trình biên dịch - nó không được viết dưới dạng thuộc tính, nhưng dưới dạng cờ thô (thời gian chạy đơn giản nằm nếu bạn hỏi "có thuộc tính [Serializable]" không kiểm tra cờ so với loại và trả về những gì bạn mong đợi để xem, mặc dù đó không phải là sự thật).

0

Câu hỏi thú vị. Tôi nghĩ rằng rất nhiều thuộc tính tích hợp được niêm phong nên điều này có thể không thực hiện được.

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