Как вызвать переопределенные методы C # с точно такими же именованными аргументами?
Пример
public static Task<CreateImageSummaryModel> CreateImagesFromDataAsync(this ITrainingApi operations, Guid projectId, IEnumerable<Stream> imageData, IList<Guid> tagIds = null, CancellationToken cancellationToken = default(CancellationToken));
public static Task<CreateImageSummaryModel> CreateImagesFromDataAsync(this ITrainingApi operations, Guid projectId, Stream imageData, IList<string> tagIds = null, CancellationToken cancellationToken = default(CancellationToken));
Те же имена методов и имена аргументов, но у аргументов разные подписи.
Теперь попытка вызвать первый метод
let uploadStreams (tag: string) (streams: Stream seq) (projectId: Guid) (trainingApi: TrainingApi) =
let tag = trainingApi.CreateTag(projectId, tag)
let tags = new List<_>([tag.Id])
let streams = streams :> IEnumerable<Stream>
trainingApi.CreateImagesFromDataAsync(projectId, imageData = streams, tagIds = tags)
Это дает ошибку компиляции
Severity Code Description Project File Line Suppression State
Error FS0001 The type 'IEnumerable<Stream>' is not compatible with the type 'Stream'
Severity Code Description Project File Line Suppression State
Error FS0193 Type constraint mismatch. The type 'IEnumerable<Stream>' is not compatible with type 'Stream'
Severity Code Description Project File Line Suppression State
Error FS0001 The type 'List<Guid>' is not compatible with the type 'IList<string>' VisionAPI
Обычно, когда я имею дело с переопределенными методами в F #, я просто использую явные имена аргументов, такие как
let x = cls.someOverriddenMethod(arg1 = 1)
Но в этом случае это не работает.
Как мне поступить в этом случае?
Спасибо