Пользовательский преобразователь AutoMapper нельзя использовать в качестве параметра типа.C#

Место общения программистов C#
Ответить
Anonymous
 Пользовательский преобразователь AutoMapper нельзя использовать в качестве параметра типа.

Сообщение Anonymous »

Я пытаюсь создать собственный преобразователь для моего AutoMapper, который почти идентичен исходной документации для пользовательских преобразователей от команды AutoMapper. У меня есть реализация IValueResolver под названием NluProgressResolver

Код: Выделить всё

public class NluProgressResolver : IValueResolver
{
public object Resolve(CluTrainingJobStateModel source, NluTrainingStateDto dest, object member, ResolutionContext context)
=> new NluTrainingProgress()
{
Percentage = (source.Result.EvaluationStatus!.PercentComplete + source.Result.TrainingStatus!.PercentComplete) / 2
};
}
Который берет источник из CluTrainingJobStateModel, пункт назначения — NluTrainingStateDto, а целевой элемент назначения — NluTrainingProgress
< pre class="lang-cs Prettyprint-override">

Код: Выделить всё

public class CluTrainingJobStateModel
{
[JsonPropertyName("result")]
public required CluTrainingJobStateResult Result { get; set; }
[JsonPropertyName("jobId")]
public required string JobId { get; set; }
[JsonPropertyName("createdDateTime")]
public string? CreatedDateTime { get; set; }
[JsonPropertyName("lastUpdatedDateTime")]
public string? LastUpdatedDateTime { get; set; }
[JsonPropertyName("expirationDateTime")]
public string? ExpirationDateTime { get; set; }
[JsonPropertyName("status")]
public CluTrainingJobStatus? Status { get; set; }
}

Код: Выделить всё

public class NluTrainingStateDto
{
[JsonPropertyName("id")]
public required string Id { get; set; }
[JsonPropertyName("status")]
public NluTrainingStatus? Status { get; set; }
[JsonPropertyName("progress")]
public NluTrainingProgress? Progress { get; set; }
}

Код: Выделить всё

public struct NluTrainingProgress
{
[JsonPropertyName("percentage")]
public required int Percentage { get; set; }
}
Что я затем пытаюсь использовать внутри CreateMap следующим образом:

Код: Выделить всё

CreateMap()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.JobId))
.ForMember(dest => dest.Status, opt => opt.MapFrom(src => src.Status))
.ForMember(dest => dest.Progress, opt => opt.MapFrom());
Это приводит к ошибке в NluProgressResolver, как показано ниже. ->
Тип Namespace.NluProgressResolver нельзя использовать как введите параметр «TValueResolver» в универсальном типе или методе «IMemberConfigurationExpression.MapFrom()». Неявного преобразования ссылок из Namespace.NluProgressResolver в AutoMapper.IValueResolver' не существует. (Я сократил фактическое пространство имен до `Namespace for, чтобы его было легче читать)
Я также хочу добавить, что я заменил NluTrainingProgress на object в преобразователе , но он показывает ту же ошибку, но вместо этого ссылается на объект, где написано Namespace.NluTrainingProgress?
P.S. Я понимаю, что это, вероятно, не соответствует некоторым рекомендациям, поэтому любые советы приветствуются.

Подробнее здесь: https://stackoverflow.com/questions/786 ... -parameter
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»