Tôi đang cố gắng để thiết lập một khía cạnh PostSharp RunOutOfProcessAttribute
để nó áp dụng cho:Áp dụng một khía cạnh quan đến các phương pháp duy nhất mà có một thuộc tính cụ thể
- tất cả các phương pháp công
- bất kỳ phương pháp đánh dấu bằng
DoSpecialFunctionAttribute
, bất kể khả năng truy cập của thành viên (công khai/được bảo vệ/riêng tư/bất kỳ điều gì).
Cho đến nay, tôi RunOutOfProcessAttribute
được định nghĩa thusly:
[Serializable]
[MulticastAttributeUsage(MulticastTargets.Method, TargetMemberAttributes = MulticastAttributes.Public)]
[AttributeUsage(AttributeTargets.Class)]
public class RunOutOfProcessAttribute : MethodInterceptionAspect
{
public override void OnInvoke(MethodInterceptionArgs args)
{
...
}
}
Các MulticastAttributeUsageAttribute
đã được tại chỗ nên thực hiện tiêu chí 1 ở trên, nhưng tôi đã không có ý tưởng làm thế nào để hoàn thành chỉ tiêu 2, mà không chỉ đơn giản là nhân đôi hành vi của khía cạnh hiện có thành thuộc tính mới.
Làm cách nào để áp dụng phương pháp này cho bất kỳ phương pháp nào được đánh dấu bằng DoSpecialFunctionAttribute
, bất kể khả năng truy cập của thành viên (công khai/bảo vệ/riêng tư/bất kỳ điều gì)?
im bối rối là tại sao này là bắt buộc. Nếu bạn đã có một 'DoSpecialFunctionAttribute' tại sao không chỉ bao gồm các chức năng để làm điều này trong thuộc tính đó? thay vì tạo ra khía cạnh nào KHÁC. – caesay
Tôi muốn có thể đặt 'RunOutOfProcessAttribute' vào một lớp, vì nó định nghĩa một hành vi lớp hơn là một hành vi của phương thức. 'RunOutOfProcessAttribute' sẽ hoạt động trên * tất cả các phương thức lớp công khai ngoài bất kỳ phương thức được bảo vệ nào được đánh dấu bằng' DoSpecialFunctionAttribute'. 'DoSpecialFunctionAttribute' sẽ không phải là một khía cạnh. –