Beispiel #1
0
            public EqualityResult <IXor2 <TAType, TBType>, Xor3 <TReasonA, TReasonB, DifferentTypesEnum> > AreEqual(IXor2 <TAType, TBType> x, IXor2 <TAType, TBType> y)
            {
                if (x.IsA && y.IsA)
                {
                    var res = _comparerA.AreEqual(x.A, y.A);
                    if (res)
                    {
                        return(EqualityResult.Ok);
                    }
                    else
                    {
                        return((Xor3 <TReasonA, TReasonB, DifferentTypesEnum>)res.NotEqualReason.Value);
                    }
                }

                if (x.IsB && y.IsB)
                {
                    var res = _comparerB.AreEqual(x.B, y.B);
                    if (res)
                    {
                        return(EqualityResult.Ok);
                    }
                    else
                    {
                        return((Xor3 <TReasonA, TReasonB, DifferentTypesEnum>)res.NotEqualReason.Value);
                    }
                }


                return((Xor3 <TReasonA, TReasonB, DifferentTypesEnum>)DifferentTypesEnum.DifferentTypes);
            }