аргументы?
public static T WithWarning<T, TWarn, TError>(this T result, string message, TWarn code, string? causedBy = null)
where TWarn : Enum
where TError : Enum
where T : CustomResult<TWarn, TError>
{
result.Warnings.Add(new CustomReportedMessage<TWarn>(message, code, causedBy));
return result;
}
// The type arguments for method 'CustomResultExtensions.WithWarning<T, TWarn, TError>(T, string, TWarn, string?)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
var result = Test2Result.New().WithWarning("test", UniversalCode.A, null);
// Все норм, потому что я его носом ткнул. Там вариант аргументов ровно один, который попадает под описание.
var result = Test2Result.New().WithWarning<Test2Result, UniversalCode, UniversalCode>("test", UniversalCode.A);
Пытался красивые результаты сделать с поддержкой кастомных ошибок 😅
Оно так не выведет TError просто из констрейнта.
Т.е. считай просто не понимает и никак не исправить?
public static CustomResult<TWarn, TError> WithWarning<T, TWarn, TError>(this CustomResult<TWarn, TError> result, string message, TWarn code, string? causedBy = null) where TWarn : Enum where TError : Enum where T : CustomResult<TWarn, TError> { result.Warnings.Add(new CustomReportedMessage<TWarn>(message, code, causedBy)); return result; } а если так сделать
и для каждого результата пользователю придется пилить экстеншены, плохо
Зачем? У тебя один базовый тип
и этот экстеншн должен возвращать корректный тип для каждого отдельного CustomResult'а
Тогда сделай custom result builder
почему этот метод не запихнуть в CustomResult?
нужно переопределять каждый раз. не парься, я нашел уже способ сделать красиво
а когда ты из сервиса будешь возвращать, всегда return type будешь указывать Result и на месте проверять if(result is MemoryResult)?
а как ты хочеш записать логику
забей, я уже задачу решил свою))
Ага. Я так и сделаю.
Прогресс идет 😅
Обсуждают сегодня