public void Test5()
        {
            IServiceCollection sc = new ServiceCollection()
                                    .AddLightweightMapper();

            IServiceProvider sp       = sc.BuildServiceProvider();
            IMapperProvider  provider = sp.GetRequiredService <IMapperProvider>();

            var a1 = provider.DefineCopyTo <S1, S2>(m => m.A);
            S2  t1 = new S2();
            S1  s1 = new S1()
            {
                A = "10"
            };

            a1(s1, t1);
            Assert.Null(t1.A);

            a1 = provider.DefineCopyTo <S1, S2>(null);
            a1(s1, t1);
            Assert.Equal("10", t1.A);

            // 去掉CD属性
            var a2 = provider.DefineCopyTo <S5, S6>(m => new S5
            {
                C = m.C,
                D = m.D
            });
            S5 s2 = new S5()
            {
                A = "A", B = 10, C = 2, D = 1, E = new S5()
                {
                    C = 20, D = 10
                }
            };
            S6 t2 = new S6();

            a2(s2, t2);
            Assert.Equal("A", t2.A);
            Assert.Null(t2.B);
            Assert.Equal(0, t2.C);
            Assert.Equal(0, t2.D1);
            Assert.Equal(20, t2.E.C);
            Assert.Equal(10, t2.E.D1);

            a2 = provider.DefineCopyTo <S5, S6>(m => new S5
            {
                E = new S5
                {
                    C = 0,
                    D = null,
                }
            });
            t2.E = new S6();
            a2(s2, t2);
            Assert.Equal(2, t2.C);
            Assert.Equal(0, t2.E.C);
            Assert.Equal(0, t2.E.D1);
        }
Esempio n. 2
0
        public void TestCopyDefine()
        {
            IServiceCollection sc = new ServiceCollection()
                                    .AddLightweightMapper();

            IServiceProvider sp       = sc.BuildServiceProvider();
            IMapperProvider  provider = sp.GetRequiredService <IMapperProvider>();

            SourceA a = new SourceA()
            {
                A = "A",
                B = "B",
                C = "C"
            };
            TargetA ta       = new TargetA();
            var     copyFunc = provider.DefineCopyTo <SourceA, TargetA>();

            copyFunc(a, ta);
            Assert.Equal("A", ta.A);
            Assert.Equal("B", ta.D);
            Assert.Equal("C", ta.E);
            Assert.Equal("A", ta.X1);
            Assert.Equal("C", ta.X2);

            var copyFunc2 = provider.DefineCopyTo <SourceA, TargetA>(t => new
            {
                A = t.A
            });

            ta = new TargetA();
            copyFunc2(a, ta);
            Assert.Null(ta.A);
            Assert.Equal("B", ta.D);
            Assert.Equal("C", ta.E);
            Assert.Null(ta.X1);
            Assert.Equal("C", ta.X2);
        }