У меня есть 2 метода, один из которых работает с универсальным параметром, а другой - с обычной строкой. Это выглядит так:
public static async Task PostAlertAsync(this IQueueService queueService,
AlertTypes alertType,
string orgId,
AlertDetailsBase details = null)
{
Guard.ArgumentNotNull(queueService, nameof(queueService));
Guard.ArgumentNotNullOrEmptyString(orgId, nameof(orgId));
var alertMessage = BuildAlertQueueMessage(alertType, orgId, details);
await queueService.SendMessageAsync(alertMessage);
}
public static async Task PostAlertAsync<T>(this IQueueService queueService,
AlertTypes alertType,
T source,
AlertDetailsBase details = null,
string customSubject = null)
where T: IAlertSource
{
Guard.ArgumentNotNull(queueService, nameof(queueService));
Guard.ArgumentNotNull(source, nameof(source));
var alertMessage = BuildAlertQueueMessage<T>(alertType, source, details, customSubject);
await queueService.SendMessageAsync(alertMessage);
}
Интересно, зачем вызывать компиляцию следующего вызова с ошибкой неоднозначности? String
в данном случае, очевидно, не реализует IAlertSource
QueueServiceCollection.Alerts.PostAlertAsync(AlertTypes.AzureAdDsProvisionCompleted, orgId);
Есть идеи? Спасибо.