CS8620: Аргумент типа «(string, object EntityPath)» нельзя использовать для «областей» параметра типа «(строковый ключ, объект? значение)[]
Рабочая версия:
Код: Выделить всё
public static class LoggerExtensions
{
public static IDisposable? BeginKeyValueScope(this ILogger logger,
params (string key, object? value)[] scopes)
{
return logger.BeginScope(
new Dictionary(scopes.Select(x =>
new KeyValuePair(x.key, x.value))));
}
public static IDisposable? BeginAzureServiceBusReceptionScope(this ILogger logger, ProcessMessageEventArgs args)
{
return logger.BeginKeyValueScope(
("AzureServiceBusEntityPath", args.EntityPath),
("AzureServiceBusMessageId", args.Message.MessageId)
);
}
}
Код: Выделить всё
public static class LoggerExtensions
{
extension(ILogger logger)
{
public IDisposable? BeginKeyValueScope(params (string key, object? value)[] scopes)
{
return logger.BeginScope(
new Dictionary(scopes.Select(x =>
new KeyValuePair(x.key, x.value))));
}
public IDisposable? BeginAzureServiceBusReceptionScope(ProcessMessageEventArgs args)
{
return logger.BeginKeyValueScope(
("AzureServiceBusEntityPath", args.EntityPath),
("AzureServiceBusMessageId", args.Message.MessageId)
);
}
}
}
Это ограничение/ошибка компилятора (менее вероятно) с новым синтаксисом элементов расширения или я делаю что-то неправильно (гораздо более вероятно).
Подробнее здесь: https://stackoverflow.com/questions/798 ... ers-syntax
Мобильная версия