Tôi đang xem xét việc sử dụng bài đăng sắc nét và tôi đang cố gắng tổng hợp một vài bản trình diễn. Một trong số đó là một khía cạnh sẽ ghi lại các ngoại lệ, và một khía cạnh khác là kiểm tra các đối số rỗng và ném một ngoại lệ khi một người gặp phải.Áp dụng các khía cạnh cho các khía cạnh với postsharp
Sự cố tôi gặp phải là tôi muốn khía cạnh đăng nhập ngoại lệ của mình để ghi lại các ngoại lệ được ném bởi khía cạnh kiểm tra rỗng. Nó dường như không hoạt động. Có ai biết cách để thực hiện công việc này không?
EDIT: Để được rõ ràng, các logger ngoại lệ được làm việc với các trường hợp ngoại lệ được ném bên ngoài của một khía cạnh, nhưng isnt đăng các trường hợp ngoại lệ thown trên NullCheckAttribute
Mã cho kiểm tra null khía cạnh như sau
[Serializable]
public class NullCheckAttribute : OnMethodBoundaryAspect
{
[ExceptionLogger]
public override void OnEntry(MethodExecutionArgs args)
{
foreach (var argument in args.Arguments)
{
if (argument == null)
throw new InvalidOperationException("Null argument in " + args.Method.Name);
}
}
}
Và mã cho các ngoại lệ logger
[Serializable]
public class ExceptionLoggerAttribute : OnMethodBoundaryAspect
{
public override void OnException(MethodExecutionArgs args)
{
Console.WriteLine("Exception thrown in " + args.Method.Name);
Console.WriteLine("***Message: " + args.Exception.Message);
Console.WriteLine("***Stack trace: " + args.Exception.StackTrace);
}
}
tôi cũng nên đề cập đến mà tôi đang đơn giản là sử dụng một giấy phép miễn phí cho điều này.
'Nó dường như không hoạt động.' - chính xác những gì đang xảy ra? – Muctadir
Trình ghi nhật ký ngoại lệ hoạt động tốt với các trường hợp ngoại lệ bình thường, nhưng các trường hợp được ném vào NullCheckAttribute arent đang được ghi lại. –
bạn đã gỡ lỗi 'NullCheckAttribute' để thấy rằng' MethodExecutionArgs' thực sự là null? – Muctadir