public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { IEither either = Activator.CreateInstance(objectType) as IEither; JsonDataType jsonType = Convert(reader.TokenType); EitherTag tag = either.OnDeserializing(jsonType); if (tag == EitherTag.Left) { object left = serializer.Deserialize(reader, either.LeftType); either.Left = left; return(either); } if (tag == EitherTag.Right) { object right = serializer.Deserialize(reader, either.RightType); either.Right = right; return(either); } return(null); }
/// <nodoc /> public Either(TRight right) { _tag = EitherTag.Right; _right = right; }
/// <nodoc /> public Either(TLeft left) { _tag = EitherTag.Left; _left = left; }
public Either(TRight right) { tag = EitherTag.Right; this.right = right; }
public Either(TLeft left) { tag = EitherTag.Left; this.left = left; }
private Either(TLeft left, TRight right, EitherTag discriminator) { this.left = left; this.right = right; this.discriminator = discriminator; }