public record Result<R, E>
{
private Result() { }
public record Ok(R Value) : Result<R, E>();
public record Fail(E Value) : Result<R, E>();
}
public record SimpleResult : Result<string, string>; // <= нельзя из-за отсутствия доступного конструктора :(
using SimpleResult = Utils.Result<string, string>; // <= требует объявления по месту использования, т.е. нельзя просто поместить в пространство имен и использовать как обычный настоящий тип в других пространствах.
Здравствуйте, Разраб, Вы писали:
Р>Р>using SimpleResult = Utils.Result<string, string>; // <= требует объявления по месту использования, т.е. нельзя просто поместить в пространство имен и использовать как обычный настоящий тип в других пространствах.
Р>
В новых версиях можно объявлять глобальный type alias
global using SimpleResult = Utils.Result<string, string>;
То что нужно?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Здравствуйте, rameel, Вы писали:
R>В новых версиях можно объявлять глобальный type alias
R>R>global using SimpleResult = Utils.Result<string, string>;
R>
R>То что нужно?
да, но это именно global, а хочется честный тип в определенном пространстве имен.
Здравствуйте, Разраб, Вы писали:
Р>Здравствуйте, rameel, Вы писали:
R>>В новых версиях можно объявлять глобальный type alias
R>>R>>global using SimpleResult = Utils.Result<string, string>;
R>>
R>>То что нужно?
Р>да, но это именно global, а хочется честный тип в определенном пространстве имен.
Такого увы нет.
А какой сценарий использования ?
Здравствуйте, _NN_, Вы писали:
_NN>Здравствуйте, Разраб, Вы писали:
Р>>Здравствуйте, rameel, Вы писали:
R>>>В новых версиях можно объявлять глобальный type alias
R>>>R>>>global using SimpleResult = Utils.Result<string, string>;
R>>>
R>>>То что нужно?
Р>>да, но это именно global, а хочется честный тип в определенном пространстве имен.
_NN>Такого увы нет.
_NN>А какой сценарий использования ?
я вижу тут больше порядка, если есть обобщённый и есть пара частых частных случаев, положить алиасы рядом(конструктор приватный или запечатанный класс — заменить наследниками нельзя).
ну и по месту использования, приятней видеть не
using Utils;
Task<Result<string, string>>
а
using Utils;
Task<SimpleResult>