Hello World
Spiga

标签:dynamic

使用Mono.Cecil辅助ASP.NET MVC使用dynamic类型Model

2011-09-06 00:21 by 老赵, 10654 visits
摘要:这也是之前在珠三角技术沙龙上的示例之一,解决的是在ASP.NET MVC使用dynamic类型Model时遇到的一个真实问题。C# 4编译器支持dynamic类型,因此在编写页面模板的时候自然就可以把它作为视图的Model类型。表现层的需求很容易改变,因此dynamic类型的Model可以减少我们反复修改强类型Model的麻烦,再配合匿名类型的使用,可谓是动静相宜,如鱼得水。不过,如果把一个匿名类型直接作为Model交给视图去使用,在默认情况下会抛出异常。我们可以用Mono.Cecil来改变这一情况。 阅读全文

使用.NET 4.0中的表达式树生成动态方法

2010-05-13 01:03 by 老赵, 8354 visits
摘要:为了在模型为dynamic类型的视图中使用一个匿名对象,我们在上一篇文章里为匿名对象创建了对应的动态类型。于是在使用时,我们会创建动态类型的对象,然后将匿名对象的属性赋值给动态对象的公开字段上。在赋值时我们使用了反射,再加上这个方法使用比较频繁,因此使用更好的方法来优化性能便是个很自然的选择。在.NET 1.0中,我们需要Emit;在.NET 2.0中则增加了DynamicMethod,相对简化了单个动态方法的创建过程;在.NET 3.5中则增加了可编译表达式树,可谓前进了一大步——那么在.NET 4.0中呢? 阅读全文

当类型为dynamic的视图模型遭遇匿名对象

2010-05-11 10:16 by 老赵, 9730 visits
摘要:当年在ASP.NET MVC 1.0时代我提到,在开发时最好将视图的Model定制为强类型的,这样可以充分利用静态检查功能进行排错。不过有人指出,这么做虽然易于静态检查,但是定义强类型的Model类型实在是太麻烦了,因此也出现了基于SmartBag等折衷方案。强类型是一种极端方案,而在C# 4.0中我们又可以使用另一个极端,那就是让Model成为dynamic类型,这样在视图中便可以完全自由地获取数据了。不过,在使用匿名对象的情况下视图会抛出奇怪的“无法找到成员”异常,我们必须解决这个问题。 阅读全文

二十行C#代码打造Ruby Markup Builder

2009-10-27 00:47 by 老赵, 18518 visits
摘要:从.NET诞生之日起就有了XML类库,但是从使用上来说非常不方便,许多行代码只能构造一个简单的XML对象。这个情况在.NET 2.0中也没有得到改变,直到有一天,LINQ to XML随.NET 3.5横空出世,于是乎XML的生活一下子变得美好了很多。与DOM API相比,使用LINQ to XML,无论是XML的构造还是读取都容易了许多。不过俗话说得好:“不怕不识货,就怕货比货”,这样的API与Ruby Markup Builder相比还是有明显差距。但是我们这些可怜的C#程序员难道只有在一边眼馋的份吗?不见得。 阅读全文
1
使用Live Messenger联系我