C4.0和VS2010新特性(7)
时间:2026-01-14
时间:2026-01-14
介绍VS2010的新特性等一些新功能
dynamic在第一话中已经展示它动态根据赋值类型直接自动完成反射的强大功能。现在又是一个新奇迹的诞生——
static void Main(string[] args)
{
dynamic d = new ExpandoObject();
= "ServiceBoy";
d.Action = Func<string>(()=>;);
Console.WriteLine(d.Action());
}
初看这个代码只是简单的读写Name属性,毫无稀奇可言。但是你注意哦——你到MSDN——或者你索性new ExpandoObject().Name 试试看,有Name和Action这个属性吗?——没有啊,真的没有!嘿,奇了怪了,既然没有,为什么你可以凭空“捏造出一个属性”,而且可以给属性赋值,并且读取属性内容呢?
俗话说的好——天下没有白给的食——微软这个类意在向我们揭露一个惊天的大秘密,那就是你可以自定义dynamic类,让这个类跟随你的要求动态的改变自己(比如增加一个新属性等)。我们可以参照MSDN,给出一个自定义的ExpandoObject: public class SimpleDynamic : DynamicObject
{
Dictionary<string, object> Properties = new Dictionary<string,
object>();
Dictionary<string, object[]> Methods = new Dictionary<string, object[]>();
public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
{
if (!Methods.Keys.Contains())
{
Methods.Add(, null);
}
if (args != null)
{
Methods[] = args;
}
StringBuilder sbu = new StringBuilder();
foreach (var item in args)
上一篇:量表简介总结
下一篇:协信中心商业项目提案