Как провести рефакторинг с тем же типом возврата в c# в отношении связи? - PullRequest
0 голосов
/ 24 января 2020

В случае проверки костюма в веб-интерфейсе я использую FluentValidation. Коды ошибок были разработаны в отдельном классе, но то, с чем я борюсь, - это то же самое «возвращение», но другая сигнатура функции. Должен ли я продолжить работу, как сейчас, или я должен создать новую функцию для этой возвращаемой части и вызвать ее вместо повторения возвращаемой части тела? Если мне нужно определить новую функцию, не могли бы вы помочь мне заставить ее работать?

.NotNull (), .WithErrorCode () и .WithMessage () взяты из FluentValidation.

    public static IRuleBuilderOptions<T, byte?> NullableByteRequiredValidation<T>(this IRuleBuilder<T, byte?> rule)
    {
        return rule
            .NotNull()
            .WithErrorCode(ErrorCodes.FieldRequired.Key)
            .WithMessage(string.Format(ErrorCodes.FieldRequired.Value, "{PropertyName}"));
    }
    #endregion Byte validations


    #region DateTime validations

    /// <summary>
    /// constructor for DateTimeRequiredValidation
    /// </summary>
    /// <param name="rule"></param>
    public static IRuleBuilderOptions<T, DateTime?> DateTimeRequiredValidation<T>(this IRuleBuilder<T, DateTime?> rule)
    {
        return rule
            .NotNull()
            .WithErrorCode(ErrorCodes.FieldRequired.Key)
            .WithMessage(string.Format(ErrorCodes.FieldRequired.Value, "{PropertyName}"));
    }

Error message class

Error message function

1 Ответ

0 голосов
/ 24 января 2020

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

  1. Если это обычный тип, то вы можете использовать базовые типы для обоих типов (старого и нового) Таким образом, подпись останется неизменной для возвратов по нотам.

  2. Если тип возвращаемого значения является универсальным c, вы должны сделать ковариант, см. ковариация

В любом случае вам придется подписать функцию функции, но вы можете сохранить одну функцию и не создавать другую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...