Хотите использовать PostSharp диагностику с аспектом для обработки исключений, инкапсулированным в сборку библиотеки.
В то же время пытается настроить и инициализировать регистратор Serilog в сборке потребителя этой библиотеки диагностики.
[AspectTypeDependency(AspectDependencyAction.Order, AspectDependencyPosition.After,
typeof(AddContextOnExceptionAttribute))]
[PSerializable]
public sealed class ReportAndSwallowExceptionAttribute : OnExceptionAspect
{
public ILogger TheLogger { get; set; }
public ReportAndSwallowExceptionAttribute(ILogger logger)
{
TheLogger = logger;
}
public override void OnException(MethodExecutionArgs args)
{
TheLogger.Error("Error happened ...");
}
}
В основном классе:
class Program
{
// below line is the critical part which seems ILogger is not allowed
[ReportAndSwallowException(Log.Logger)]
public static void TryExceptionMethod()
{
throw new NotImplementedException();
}
static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.WriteTo.File(@"HERE\Logs\log-x.log",
rollingInterval: RollingInterval.Day)
.CreateLogger();
Console.WriteLine("Hello World!");
TryExceptionMethod();
}
}
Кажется, передача ILogger
этому атрибуту является незаконной, как я могу реализовать этот сценарий?
Текущая ошибка:
Error CS0181: Attribute constructor parameter 'logger' has type 'ILogger', which is not a valid attribute parameter type
Думаю, для решения этой ошибки требуется константа, но главный вопрос - как реализовать этот сценарий: поместите регистратор в Потребительский проект имеет аспекты в библиотеке.