It seems like if you wrap both in a record then it should be possible:
public record Left<T>(T Value); public record Right<T>(T Value); public union Either<L, R>(Left<L>, Right<R>);