Untitled
unknown
plain_text
a year ago
1.8 kB
8
Indexable
public record Ok200();
public record Ok207();
public record Error401() : ResultError("a");
public record Error404() : ResultError("b");
public class Test
{
public async Task<Result<OneOf<Ok200,Ok207>>> TestAsync()
{
var code = 200;
if (code == 200)
{
return OneOf<Ok200, Ok207>.FromT0(new Ok200());
}
if (code == 204)
{
return OneOf<Ok200, Ok207>.FromT1(new Ok207());
}
if (code == 401)
{
return Result<OneOf<Ok200, Ok207>>.FromError(new Error401());
}
if (code == 404)
{
return Result<OneOf<Ok200, Ok207>>.FromError(new Error404());
}
return Result<OneOf<Ok200, Ok207>>.FromError(new InvalidOperationError("Unknown code"));
}
public async Task ClientMethod()
{
var result = await TestAsync();
// jeśli był sukces (czyli mamy instancję OneOf w środku resulta w propsie Entity)
if (result.IsDefined(out var success))
{
if (success.TryPickT0(out var ok200, out var ok207))
{
// Handle Ok200
}
else
{
// Handle Ok207
}
}
else
{
// Handle Error
if (result.Error is Error401 error401)
{
// Handle Error401
}
else if (result.Error is Error404 error404)
{
// Handle Error404
}
else
{
// Handle other errors
}
}
}
}Editor is loading...
Leave a Comment