예제 #1
0
            protected override Deconstructed <string, string, string[]> Deconstruct(string[] item)
            {
                var rem = new string[item.Length - 2];

                Array.Copy(item, 2, rem, 0, item.Length - 2);
                return(Deconstructed.Create(item[0], item[1], rem));
            }
예제 #2
0
            protected override string[] Reconstruct(Deconstructed <string, string, string[]> deconstructed)
            {
                var item = new string[deconstructed.NonCached.Length + 2];

                item[0] = deconstructed.Cached1;
                item[1] = deconstructed.Cached2;
                Array.Copy(deconstructed.NonCached, 0, item, 2, deconstructed.NonCached.Length);
                return(item);
            }
예제 #3
0
        public void Deconstructed_1Cached_Equality()
        {
            var d1 = Deconstructed.Create(1, 2);
            var d2 = Deconstructed.Create(1, 2);
            var d3 = Deconstructed.Create(int.MaxValue, 2);
            var d4 = Deconstructed.Create(1, int.MaxValue);

            Assert.IsTrue(d1 == d2);
            Assert.IsTrue(d1.Equals((object)d2));
            Assert.IsFalse(d1.Equals(new object()));
            Assert.IsTrue(d1 != d3);
            Assert.IsFalse(d1 == d3);
            Assert.IsFalse(d1 == d4);

            Assert.AreEqual(d1.GetHashCode(), d2.GetHashCode());
        }
예제 #4
0
 protected override Foo Reconstruct(Deconstructed <string, object> deconstructed)
 {
     return(new Foo {
         Shared = deconstructed.Cached, Unshared = deconstructed.NonCached
     });
 }
예제 #5
0
 protected override Deconstructed <string, object> Deconstruct(Foo item)
 {
     return(Deconstructed.Create(item.Shared, item.Unshared));
 }
예제 #6
0
 protected override ConstantExpression Reconstruct(Deconstructed <Type, object> deconstructed)
 {
     return(Expression.Constant(deconstructed.NonCached, deconstructed.Cached));
 }
예제 #7
0
 protected override Deconstructed <Type, object> Deconstruct(ConstantExpression item)
 {
     return(Deconstructed.Create(item.Type, item.Value));
 }
예제 #8
0
 protected override Foo Reconstruct(Deconstructed <Bar, int> deconstructed)
 {
     return(new Foo {
         Bar = deconstructed.Cached, Num = deconstructed.NonCached
     });
 }
예제 #9
0
 protected override Deconstructed <Bar, int> Deconstruct(Foo item)
 {
     return(Deconstructed.Create(item.Bar, item.Num));
 }
예제 #10
0
 protected override Bar Reconstruct(Deconstructed <string, object> deconstructed)
 {
     return(new Bar {
         Baz = deconstructed.Cached, Qux = deconstructed.NonCached
     });
 }
예제 #11
0
 protected override Deconstructed <string, object> Deconstruct(Bar item)
 {
     return(Deconstructed.Create(item.Baz, item.Qux));
 }