扩展DLL中的Model

1 问题描述

在一个网站中,要对调用WCF服务返回的结果集数进行一次计算,但是原有的数据也要保存起来,老的数据和新的数据都要存库。对于这样的需求,其实最好的方法是就是直接修改服务端的Model,但是这个服务调用的地方太多了,如果这样修改的话,影响点会比较大,而且并不是所有的调用方都要这样处理,比如说接口用户,就没有这样的需求。因此这个需求只能客户端网站自己处理。

2 假设场景

需求是工作中遇到的,撇开原始场景,可以抽象成下面这样的情况:

说明:现在要根据用户的习惯,来决定显示在页面上的商品信息。网站用户查询商品信息,Web网站调用商品查询服务,返回商品订单列表给用户。没有加需求之前,可以理解为商品查询服务返回出来的商品信息是什么,就给用户显示什么,现在要预测用户的习惯,展示商品信息,并且要创单将新旧两种信息存库。

3 解决方法

我不知道其他人在面对这样的需求时,会怎么做,我的第一反应是,新建一个商品信息子类(ProductSub),继承商品查询服务的商品信息(Product)。然而这依然有一大堆麻烦。

商品查询服务的商品Model是比较复杂的,网站会把查询出来的商品信息都存入Session中,用户在页面上选中一条商品,创单的时候,再从Session中把这个商品信息取出来,封装订单服务创单的对象,创建订单。我的想法是,先把查询出来的每一个Product转换成ProductSub对象,再查询用户习惯,进行处理,把该填充的数据填充进去,再进行排序之类的页面展示顺序的调整。创单的时候,把ProductSub对象转换成Product对象,把要存储的信息放到一个Information对象中,创单

我遇到的一个麻烦就是,Product类不能直接转为ProductSub类的。C#基础知识,这个时候,我就想起了一个扩展类。具体怎么用,参见这篇博客:http://www.cnblogs.com/WindBlog/archive/2011/07/29/2120655.html,但其实放到Bussiness也是可以的。但是我觉得如果我用到product对象对象就能直接点出ParseProductSub类的方法应该是更好的。另一个问题是,在创单的时候,如果把ProductSub对象强制转换为Product对象的话,调服务的时候会报一个错误因为ProductSub,我想着肯定是订单服务并没有这个类,只有Product类。于是我在ProductSub类中写了一个方法ParseProduct,里面的方法,就是调用了一个return base.Copy(),就是调用返回父类的一个深复制类。

写这篇文章的目的,是想如果发现了更好的办法,我就明天来悄悄咪咪改得更加高级一点,但是现在想来,我可能根本没有把问题描述清楚。我看前一个人的处理方式是,直接新建一个类VMInfo

类似这样,我就纠结了很久在这两种方式上,最后我还是选择上面一种。

public class VMInfo
{
  public Product product
  {
    get;
    set;
  }

  // 这是新的类
  public OtherInfo otherInfo
  {
    get;
    set;
  }
}
时间: 2024-10-14 12:30:23

扩展DLL中的Model的相关文章

(转载)DLL动态链接库编程入门之五:MFC扩展DLL

MFC扩展DLL的内涵为MFC的扩展,用户使用MFC扩展DLL就像使用MFC本身的DLL一样.除了可以在MFC扩展DLL的内部使用MFC以外,MFC扩展DLL与应用程序的接口部分也可以是MFC.我们一般使用MFC扩展DLL来包含一些MFC的增强功能,譬如扩展MFC的CStatic.CButton等类使之具备更强大的能力. 使用Visual C++向导生产MFC扩展DLL时,MFC向导会自动增加DLL的入口函数DllMain: C++代码 extern "C" int APIENTRY

[转]从普通DLL中导出C++类 – dllexport和dllimport的使用方法(中英对照、附注解)

这几天写几个小程序练手,在准备将一个类导出时,发现还真不知道如果不用MFC的扩展DLL,是怎么导出的.但我知道dllexport可以导出函数和变量,而且MFC扩展DLL就算是使用了MFC的功能,但能否导出类应该也不是必须用MFC才能够做到,一定是有相应的机制可以实现.于是查了一下MSDN,发现这个机制简单的可怕,原来就和导出函数一样,把dllexport关键字加到类名前就可以了.估计和我一样的同学大有人在,把MSDN的相关文档翻译出来,附上我的注解,希望对大家有用. 评注程序均在Visual S

.Net中把图片等文件放入DLL中,并在程序中引用

[摘要] 有时我们需要隐藏程序中的一些资源,比如游戏,过关后才能看到图片,那么图片就必须隐藏起来,否则不用玩这个游戏就可以看到你的图片了,呵呵. 本文就讲述了如何把文件(比如图片,WORD文档等等) 隐藏到DLL中,然后在程序中可以自己根据需要导出图片进行处理. 注:本站原创,转载请注明本站网址:http://www.beinet.cn/blog/ [全文] 第1步:我们要生成一个资源文件,先把要隐藏的文件放入到这个资源文件中 (资源文件大致可以存放三种数据资源:字节数组.各种对象和字符串) 首

DLL中如何获取自身的句柄

问题:DLL中如何获取DLL自身所在的文件夹,而不是主调程序的.用GetCurrentDirectory获取的是exe主调程序所在的目录,不符合我的要求:用GetModuleFileName只能在DllMain中才能获取到,因为DllMain第一个参数hInstance就是DLL模块局并,而GetModuleFileName()只有传入DLL模块句柄才能获取DLL路径. 但是,如果不是DllMain项目,而是Win32 DLL勾选MFC选项的项目,入口函数是int _tmain(int argc

Django中的Model继承

Django 中的 model 继承和 Python 中的类继承非常相似,只不过你要选择具体的实现方式:让父 model 拥有独立的数据库:还是让父 model 只包含基本的公共信息,而这些信息只能由子 model 呈现. Django中有三种继承关系: 1.通常,你只是想用父 model 来保存那些你不想在子 model 中重复录入的信息.父类是不使用的也就是不生成单独的数据表,这种情况下使用抽象基类继承 Abstract base classes. 2.如果你想从现有的Model继承并让每个

Native Application 开发详解(直接在程序中调用 ntdll.dll 中的 Native API,有内存小、速度快、安全、API丰富等8大优点)

文章目录:                   1. 引子: 2. Native Application Demo 展示: 3. Native Application 简介: 4. Native Application 有何妙用: 5. MJ0011 关于 Native Application 的文章整理: 6. 互联网上其他关于 Native Application 的文章整理: 7. 小结: 1. 引子: 其实在好久以前就看了 MJ0011 翻译的那个<Native 应用程序详细>系列的文

MFC的规则DLL与扩展DLL

一.MFC规则DLL MFC规则DLL可以在该dll内部使用MFC,但是与应用程序的接口不能是MFC的.能够被所有支持dll的编程语言所写的应用程序使用,当然也包括使用MFC创建的应用程序.在这种动态链接库中包含一个从CWinApp中继承而来的类,DllMain函数也被隐藏在其中了. 规则DLL包含俩类——静态链接到MFC上和动态连接到MFC上.静态链接到MFC上的规则DLL与MFC静态链接,将MFC的dll代码直接生成在该.dll中,在调用该dll时,使用的是该dll的资源句柄 :动态链接到M

Qt调用dll中的功能函数

DLL 优点 ------------------------------------- 1.扩展了应用程序的特性: 2.可以用许多种编程语言来编写: 3.简化了软件项目的管理: 4.有助于节省内存: 5.有助于资源共享: 6.有助于应用程序的本地化: 7.有助于解决平台差异: 8.可以用于一些特殊的目的.windows使得某些特性只能为DLL所用. 转载:http://www.cnblogs.com/hicjiajia/archive/2010/08/27/1810239.html Qt调用d

MVC和EF中的 Model First 和 Code First

准备:先引入MVC和EF的dll包 *命令方法:打开工具--库程序包管理器--程序包管理器控制台,选择自己的项目 a)     Install-Package EntityFramework -Version 6.1.1 b)     Install-Package Microsoft.AspNet.Mvc -Version 5.2.2 一.Code First 模式是以代码先行,将Model层写好后反射数据库的方法,这里的数据库需要自己新建,并与model层的字段名完全对应. 实现的方法如下: