Bmrxntfj.UIMapper 0.1
(UIMapper)界面/对象映射
主要是为了隔离界面,把重心放在领域模型上。在领域模型中,一切皆为对象。
比如O/RM,也是为了隔离关系数据到领域对象的转换。
一些不重复,但感觉重复的代码,比如:
1、UI->Model(界面数据转化为领域数据)
User.FirstName=txtFirstName.Text;
User.LastName=txtLastName.Text;
User.NickName=txtNickName.Text;

2、Model->UI(领域数据转化到界面)
txtFirstName.Text=User.FirstName;
txtLastName.Text=User.LastName;
txtNickName.Text=User.NickName;

但是可能还会有很多类似这样的代码。
Bmrxntfj.UIMapper 的目的就是为了解决这样的问题。目前Bmrxntfj.UIMapper只支持简单的功能,不能实践应用。Bmrxntfj.UIMapper的目标是一个辅助的工具,只关心界面与模型之间的数据交接,不与数据库产生联系。
在开发之前,也有类似的成熟产品Wilson UIMapper(http://uimapper.net),可惜只能研究下free version。
另外园子里也有人写过类似的东西,只不过也不成熟。
资料:
http://www.cnblogs.com/microsheen/archive/2005/06/06/168520.html
http://microsheen.cnblogs.com/archive/2005/08/28/224607.html

具体应用
领域实体

Code
public class User
{
    private string m_FirstName;
    private string m_LastName;
    private string m_NickName;
    private string m_Dept;

    public string FirstName
    {
        get { return "FirstName"; }
        set { m_FirstName = value; }
    }
    public string LastName
    {
        get { return "LastName"; }
        set { m_LastName = value; }
    }
    public string NickName
    {
        get { return "NickName"; }
        set { m_NickName = value; }
    }
    public Dept Dept
    {
        get { return new Dept(); }
        set { m_Dept = value; }
    }
}

public class Dept
{
    private string m_Name;
    private int m_MemeberCount;

    public string Name
    {
        get { return "DeptName"; }
        set { m_Name = value; }
    }
    public int MemeberCount
    {
        get { return 10; }
        set { m_MemeberCount = value; }
    }
}

界面代码:
<asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
<asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>
<asp:TextBox ID="txtNickName" runat="server"></asp:TextBox>
<br />
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
<asp:TextBox ID="txtMemeberCount" runat="server"></asp:TextBox>

配置文件:
<?xml version="1.0"?>
<page>
  <object type="User">
    <property type="System.String" name="FirstName" controlid="txtFirstName"></property>
    <property type="System.String" name="LastName" controlid="txtLastName"></property>
    <property type="System.String" name="NickName" controlid="txtNickName"></property>
    <reference type="Dept" name="Dept">
      <property type="System.String" name="Name" controlid="txtName"></property>
      <property type="System.String" name="MemeberCount" controlid="txtMemeberCount"></property>
    </reference>
  </object>
</page>

代码:
Model->UI
Mapper mapper = new Mapper(Server.MapPath("map.xml"));
mapper.MappingUI(new User());

UI->Model
Mapper mapper = new Mapper(Server.MapPath("map.xml"));
object user=mapper.MappingObject(typeof(User));
源码文件:
/Files/bmrxntfj/UIMapper.rar

转载于:https://www.cnblogs.com/bmrxntfj/archive/2008/04/19/1161176.html

Bmrxntfj.UIMapper界面对象映射相关推荐

  1. Qt工作笔记-通过C++使widgets与QQuick交互(包含qml界面对象与C++对象映射)

    目录 理论及程序运行 源码 理论及程序运行 这里要注意,通过qmlRegisterType函数去注册一个QML类! 下面再指明一个关键的问题,如何把QML界面的对象映射到C++呢! 可以有如下的处理: ...

  2. 重磅发布:Redis 对象映射框架来了,操作大大简化!

    欢迎关注方志朋的博客,回复"666"获面试宝典 前言 最近,Redis 官方博客宣布推出四个用于 Redis 的客户端工具库:Redis OM(对象映射库,Object Mappi ...

  3. PHP 设计模式 笔记与总结(9)数据对象映射模式

    [数据对象映射模式] 是将对象和数据存储映射起来,对一个对象的操作会映射为对数据存储的操作.例如在代码中 new 一个对象,使用数据对象映射模式就可以将对象的一些操作比如设置一些属性,就会自动保存到数 ...

  4. .NET平台开源项目速览(14)最快的对象映射组件Tiny Mapper

    好久没有写文章,工作甚忙,但每日还是关注.NET领域的开源项目.五一休息,放松了一下之后,今天就给大家介绍一个轻量级的对象映射工具Tiny Mapper:号称是.NET平台最快的对象映射组件.那就一起 ...

  5. automapper java 有什么_对象映射工具AutoMapper介绍

    AutoMapper是用来解决对象之间映射转换的类库.对于我们开发人员来说,写对象之间互相转换的代码是一件极其浪费生命的事情,AutoMapper能够帮助我们节省不少时间. 一. AutoMapper ...

  6. MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM)

    类型别名(typeAliases):      作用:通过一个简单的别名来表示一个冗长的类型,这样可以降低复杂度.     类型别名标签typeAliases中可以包含多个typeAlias,如下 [ ...

  7. 基于 abp vNext 和 .NET Core 开发博客项目 - 用AutoMapper搞定对象映射

    基于 abp vNext 和 .NET Core 开发博客项目 - 用AutoMapper搞定对象映射 转载于:https://github.com/Meowv/Blog 本篇紧接着来玩一下AutoM ...

  8. PHP 设计模式之数据对象映射模式

    <?php// 数据对象映射模式 class User {public $id;public $name;public $mobile;public $regtime;private $data ...

  9. C#对象映射器之Mapster

    简介 Mapster是一个快,小巧,功能强大的对象映射.Net框架 例子 我有两个Model类且他们的属性一致,我们将 SourceObjectTest赋值给DestObjectTest该怎么做? S ...

最新文章

  1. Python 循环拼接字符串_详解Python拼接字符串的七种方式
  2. Spring 官方发起Spring Authorization Server 项目
  3. JS 简单实现公告消息自动逐条切换
  4. InstallShield 2011新功能试用(3)- Script Editor Intellisense
  5. Spring AOP概述及底层实现原理
  6. Codeforces Round #250 (Div. 2) A - The Child and Homework
  7. 查看oracle的块大小,查看操作系统块大小
  8. android里canvas视频帧,移动端用canvas截取视频封面,如何不截取第一帧,而是截取其它的帧?...
  9. 使用PDO连接数据库 查询和插入乱码的解决方法
  10. NYOJ--4--ASCII码排序
  11. 与你一起学习Microsoft Visio——基础篇
  12. springboot实现任务调度的第三种方式------使用第三方quartz插件调度(springBoot+quartz+cronTrigger进行任务调度)
  13. python诗歌文件格式处理_Python诗歌的依赖版本语法
  14. cst2020的linux版本,如何安装CST2020的windows版本
  15. 《HarmonyOS实战—交互的艺术》
  16. iOS 限制输入框的字符长度
  17. ironman钢铁侠高清mac动态壁纸
  18. 为什么微信显示这个android设备,微信显示安卓手机型号在哪设置
  19. 近年图像翻译先进模型小结
  20. 计算机科学与技术反思录

热门文章

  1. spring的bean注释_Spring @Bean注释
  2. RxJava flatMap,switchMap,concatMap
  3. wordpress评论框_如何通过过滤和阻止它们来抵御WordPress垃圾评论
  4. WPS配置工具参数 ksomisc.exe
  5. 开课吧:C++基础之字符串匹配之BM算法(Boyer-Moore)
  6. Java基础篇:什么是死锁?如何去避免它?
  7. 十年 IT 老兵告诉你如何快速构建可直接落地、基于开源的低成本架构!
  8. 某度质量部测试开发面试题2(未完待续)
  9. 剖析Elasticsearch集群系列之二:分布式的三个C、translog和Lucene段
  10. 太仓爱尚你婚庆--太仓浪漫婚庆第一品牌