Trong ứng dụng của tôi, trước đây tôi đã sử dụng các thuộc tính C# thông thường để "chú thích" một phương thức. Ví dụ:Nhiều khía cạnh trên một phương thức
[Foo(SomeKey="A", SomeValue="3")]
[Foo(SomeKey="B", SomeValue="4")]
public void TheMethod()
{
SpecialAttributeLogicHere();
}
Điều gì SpecialAttributeLogicHere() làm là xem xét phản ánh tất cả thuộc tính Foo đã chú thích phương pháp cụ thể này. Sau đó, nó sẽ tự mình tạo một từ điển riêng cho tất cả các khóa và giá trị.
Tôi hiện đang cố gắng chuyển sang PostSharp, vì SpecialAttributeLogic có thể được đưa vào một khía cạnh (và được xóa khỏi thân phương thức sạch hơn nhiều!), Trong OnEntry. Foo sẽ được thay thế bằng một khía cạnh mở rộng OnMethodBoundaryAspect.
tôi vẫn muốn sử dụng nó theo cách sau:
[Foo(SomeKey="A", SomeValue="3")]
[Foo(SomeKey="B", SomeValue="4")]
Nhưng nếu Foo có OnEntry, mà có nghĩa là "SpecialAttributeLogic" sẽ được thực hiện hai lần. Tôi về cơ bản cần phải "thu thập" tất cả các khóa và giá trị từ mỗi Foo(), thành một từ điển, mà sau đó tôi áp dụng một số logic để.
Làm cách nào để thực hiện điều này (hoặc các phương pháp hay nhất) với PostSharp? Cảm ơn!
thêm ví dụ làm việc vào câu trả lời của tôi bên dưới. –