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);
        }
Example #2
0
 /// <nodoc />
 public Either(TRight right)
 {
     _tag   = EitherTag.Right;
     _right = right;
 }
Example #3
0
 /// <nodoc />
 public Either(TLeft left)
 {
     _tag  = EitherTag.Left;
     _left = left;
 }
Example #4
0
 public Either(TRight right)
 {
     tag        = EitherTag.Right;
     this.right = right;
 }
Example #5
0
 public Either(TLeft left)
 {
     tag       = EitherTag.Left;
     this.left = left;
 }
Example #6
0
 private Either(TLeft left, TRight right, EitherTag discriminator)
 {
     this.left          = left;
     this.right         = right;
     this.discriminator = discriminator;
 }