为什么是SmartObject?

在编程过程中常常会遇到一个困扰:在一个大型系统中实体类太多,实体类不稳定经常变化,常常只需要其中几个属性,或者需要为其添加一个临时属性。这些问题都时常让人觉得编程麻烦。

那么我想说的是现在我们有一个更好的方案,弱类型粉墨登场(4.0以上)!!!有很多人会说这不靠谱吧?弱类型效率低,而且没有智能提示。不过我认为这种说法似是而非。首先说效率问题,强类型往往需要转化好几次才成目标对象,在数据呈现时绑定需要反射,这些不是性能损耗吗?大多数时候就算牺牲一点性能,如果能提高可扩展性和维护性是值得的。再说智能提示,确实很方便。但是作为一个实体你编程时不应该清楚里面包含哪些属性吗?在复杂的系统中,如物料,订单等都包含大量的属性,智能提示一大片,此时真的好用吗?我估计跟我一样看都看不过来!滚动条就让人心烦死了。

为什么我要推荐http:smartobject.codeplex.com呢?优势显而易见!

1.和其它弱类型一样扩展性良好

2.对json序列化和反序列化支持良好

3.提供了属性和索引访问方式(json.net反序列化为JObject只能是obj[prop].ToObject<T>(),这一步显然需要额外的开销运算,这样访问方式很不优雅)

4.反序列化之后的类型准确(你会发现json.net反序列化后类型不精确)

时间: 2024-10-11 13:45:05

为什么是SmartObject?的相关文章

TypeScript手册翻译系列8-常见错误与Mixins

常见错误 下面列出了在使用TypeScript语言和编译器期间,经常会遇到的一些常见错误. "tsc.exe" exited with error code 1. 解决方案: 检查文件编码为UTF-8 - https://typescript.codeplex.com/workitem/1587 external module XYZ cannot be resolved 解决方案:检查模块路径是大小写敏感- https://typescript.codeplex.com/workit

强弱之争

在编程过程中常常会遇到这样一些困扰: 场景:domain实体A具有属性(B,C,D,E),那么我们建实体A的Class具有属性B,C,D,E.但是对于不同角色A的表现形式可能不一样,在财务看来可能需要B,C,D,E,F属性(F为计算属性),在生产需要B,C,D,E,G属性(G为XX属性),在销售看来需要B,C,D,E,H属性(H为XX属性). 我们经常需要创建类A1(B,C,D,E,F),A2(B,C,D,E,G),A3(B,C,D,E,H),A1,A2,A3均继承自A类. 还有一类需求,有时候

在SharePoint中集成数据

随着SharePoint 2013的发布,Microsoft已提供Business Connectivity Services(BCS)增强功能以及外部列表功能,确保您可以更简单地在SharePoint环境下从外部数据源提取数据.针对诸如服务台票务应用或销售仪表盘等实施解决方案,再无需对自定义解决方案进行编码的开发人员资源.我们已通过K2注意到,客户需要慎重考虑,而且他们已经开始构建更复杂的解决方案,SharePoint中开箱即用式的数据集成功能并不具有他们所需的灵活性.让我们以一个典型的销售订

利用K2和Microsoft Dynamics CRM构建业务App的5大理由

Microsoft Dynamics CRM提供了一个绝佳的客户关系管理平台,使您能够创建各种以客户为中心的解决方案.然而,通过将K2的企业业务流程功能与Microsoft Dynamics CRM相结合,您有机会构建为企业量身定制的业务应用程序.以下仅列举K2与Microsoft Dynamics CRM结合可为您带来的五大优势. 一.企业流程 Microsoft Dynamics CRM包含了一些流程功能,这些功能对于短暂的(几秒钟)实体操作流程来说至关重要,比如发布新信息时创建电话跟进流程

【第8篇】TypeScript的Mixin案例代码详解

9.1Mixin使用 Ts代码 /** * Mixin使用. * *随着传统的面向对象的层次结构,从可重用的组件建立类的另一种流行的方式是通过简单的组合部分类来构建他们. *你可能熟悉混入或性状比如Scala语言的理念,模式也达到了JavaScript的一些社区人气 */ // Disposable Mixin(一次性) class Disposable { isDisposed: boolean; dispose() { this.isDisposed = true; } } // Activ

Forrester:Low-code带来的高效率

在变化莫测的商业环境里,企业如何更灵活适应一切变化?答案就是Low-code平台. 根据市场研究机构Forrester的最新报告:面向用户的应用出现了Low-code开发平台.Low-code应用程序配置和测试的速度远远超越了传统的开发模式. 随着面向用户的应用需求不断增加,传统的用于业务流程管理的开发平台已经无法适应"短周期和快速化"的应用开发需求.一些企业试图通过外包.打包应用程序或者专门的中间件来解决问题,但这些措施都无法解决最基本的问题.相反,Low-code平台减少了手工编码

花式秀恩爱,不服你点进来受虐啊!

啊~~~~七夕 ▼ 你比巴西少一xi 你比山西多四xi 对有情人来说今天就是情人节, 对单身汪来说,今天就是个星期四. but, 软件也是要秀恩爱的! ? 晒晒我家亲爱的CRM,它的全名叫Microsoft Dynamics CRM,我们相识在过去的某一天,我们俩的缘分绝对是杠杠的-- Microsoft Dynamics CRM提供了一个绝佳的客户关系管理平台,使您能够创建各种以客户为中心的解决方案.更重要的是,通过将K2的企业业务流程功能与Microsoft Dynamics CRM相结合,

七、Typescript Mixins(混合)

除了惯例的面对对象的思想,另一种较流行的通过可复用组件创建类的方法是将简单的类混合到一起.你可能对这种混合的方式比较熟悉或对Scala语言的特性有理解,这种模式在JavaScript社区也有一定的人气. 混合案例 在下面的代码中,我们展示了如何在TypeScript中混合模型,看完代码之后,再分析它的执行. // Disposable Mixin class Disposable { isDisposed: boolean; dispose() { this.isDisposed = true;

转载:《TypeScript 中文入门教程》 10、混入

版权 文章转载自:https://github.com/zhongsp 建议您直接跳转到上面的网址查看最新版本. 介绍 除了传统的面向对象继承方式,还流行一种通过可重用组件创建类的方式,就是联合另一个简单类的代码. 你可能在Scala等语言里对mixins及其特性已经很熟悉了,但它在JavaScript中也是很流行的. 混入示例 下面的代码演示了如何在TypeScript里使用混入. 后面我们还会解释这段代码是怎么工作的. // Disposable Mixin class Disposable