zoukankan      html  css  js  c++  java
  • OO Mapper 实践(上篇)

             上一篇 介绍了OO Mapper的作用以及支持的功能。这一篇将以上一篇为提纲进行实践。

       准备工作

    • 下载NLite
    •  编译NLite 项目
    •  创建一个NUnit单元测试项目
    •  添加NLite.dll 引用
    •   添加 : using NLite;

           实践:

             1. Any -> String 

    Assert.AreEqual("5", Mapper.Map<int, string>(5));
    

            2. primitive->Enum,Enum->primitive

       [TestFixture]
        public class EnumTests
        {
            public enum En1 : byte
            {
                a = 1,
                b = 2,
                c = 3
            }
    
            public enum En2 : long
            {
                a = 1,
                b = 2,
                c = 3
            }
    
            public enum En3 : int
            {
                b = 2,
                c = 3,
                a = 1
            }
    
            public class A
            {
                public En1 en1 { get; set; }
                public En2 en2;
                public En3 en3 { get; set; }
                public decimal en4;
                public string en5;
                public En1? en6;
                public En3 en7;
                public En3? en8;
                public En3? en9 = En3.c;
            }
    
            public class B
            {
                public decimal en1 = 3;
                public En1 en2 { get; set; }
                public string en3 = "c";
                public En2 en4 = En2.b;
                public En3 en5 = En3.a;
                public En2 en6 = En2.c;
                public En1? en7 = En1.c;
                public En1? en8 = En1.c;
                public En2? en9 = null;
    
                public B()
                {
                    en2 = En1.c;
                }
            }
            [Test]
            public void EnumTests1()
            {
                 Mapper.CreateMapper<B, A>();
    
                var a = Mapper.Map<B,A>(new B());
                Assert.IsTrue(a.en1 == En1.c);
                Assert.IsTrue(a.en2 == En2.c);
                Assert.IsTrue(a.en3 == En3.c);
                Assert.IsTrue(a.en4 == 2);
                Assert.IsTrue(a.en6 == En1.c);
                Assert.IsTrue(a.en7 == En3.c);
                Assert.IsTrue(a.en8 == En3.c);
                Assert.IsNull(a.en9);
            }
        }
    

        3. Nullable -> Primitive, 

                Assert.AreEqual(true, Mapper.Map<bool?, bool>(true));
                Assert.AreEqual(false, Mapper.Map<bool?, bool>(false));
                Assert.AreEqual(false, Mapper.Map<bool?, bool>(null));
    

               4. Primitive -> Nullable

                Assert.AreEqual(true, Mapper.Map<bool, bool?>(true));
                Assert.AreEqual(false, Mapper.Map<bool, bool?>(false));
    

               5. Nullable -> Nullable

                Assert.IsFalse(Mapper.Map<sbyte?, Boolean?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<Char?, Boolean?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<Byte?, Boolean?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<Int16?, Boolean?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<UInt16?, Boolean?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<Int32?, Boolean?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<UInt32?, Boolean?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<Int64?, Boolean?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<UInt64?, Boolean?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<Single?, Boolean?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<Double?, Boolean?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<Decimal?, Boolean?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<DateTime?, Boolean?>(null).HasValue);
    
                Assert.IsFalse(Mapper.Map<Boolean?, Char?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<sbyte?, Char?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<Byte?, Char?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<Int16?, Char?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<UInt16?, Char?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<Int32?, Char?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<UInt32?, Char?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<Int64?, Char?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<UInt64?, Char?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<Single?, Char?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<Double?, Char?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<Decimal?, Char?>(null).HasValue);
                Assert.IsFalse(Mapper.Map<DateTime?, Char?>(null).HasValue);
    
    
                。。。
     

        6.  Null -> Primitive

                object d = null;
                object t = Mapper.Map(d, null, typeof(Int32));
                Assert.IsInstanceOf<int>(t);
    

              未完待续。

  • 相关阅读:
    Android开源图表图形库K线图
    交易所8种作死方式
    Android百大框架排行榜
    15类Android通用流行框架
    如何避免Scrum敏捷开发团队反思会形式化,海星法介绍
    2018年Android面试题含答案--适合中高级
    FCoin优势
    golang学习笔记16 beego orm 数据库操作
    金融系统中加密机的简介
    ESB(Enterprise Service Bus)企业服务总线介绍
  • 原文地址:https://www.cnblogs.com/netcasewqs/p/2009278.html
Copyright © 2011-2022 走看看