PropertyInfo[] peroperties = typeof(PersonalEventEntity).GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetField | BindingFlags.SetField);
//foreach (PersonalEventEntity pe in eventList)
//{
// dynamic dpe = new System.Dynamic.ExpandoObject();
// dpe.Resources = new ResourceCollection();
// dpe.Resources.Add(new Resource { Type = "Calendar", Key = pe.GroupList != null && pe.GroupList.Count > 0 ? 2 : 1 });
// foreach (PropertyInfo property in peroperties)
// {
// ((IDictionary<string, object>)dpe).Add(property.Name, property.GetValue(pe, null));
// }
// dyList.Add(dpe);
//}
一下内容为转载:
http://www.cnblogs.com/timy/archive/2010/08/28/1811152.html
本篇文章中就ExpandoObject的基本使用进行一些demo。我们几乎都知道dynamic特性是.net 4.0中一个主要的新特性,而ExpandoObject正是这样的一个动态的类型。ExpandoObject允许我们在实例化之后在运行时进行成员的增加、删除。下面我们来看下基本的使用:
Adding Members
1)实例化
如果需要延迟绑定的话,我们需要用dynamic来定义ExpandpObject的实例化变量,关于dynamic的使用,估计大家都很清楚了。
1.
dynamic obj = new ExpandoObject();
2)增加属性成员
01.
[TestMethod]
02.
public void ExpandoObjectTest()
03.
{
04.
dynamic employee = new ExpandoObject();
05.
employee.FirstName = "Henry";
06.
employee.LastName = "Cui";
07.
employee.Age = 23;
08.
Console.WriteLine("Employee's name :{0} age:{1}",
09.
employee.FirstName + employee.LastName,
10.
employee.Age);
11.
}
测试的结果:
3)增加Method
在增加方法的时候,先把成员表现成delegate,先看一个没有参数的无返回值的方法:
01.
[TestMethod]
02.
public void ExpandoObjectTest()
03.
{
04.
dynamic employee = new ExpandoObject();
05.
employee.FirstName = "Henry";
06.
employee.LastName = "Cui";
07.
employee.Age = 23;
08.
employee.SayHello = (Action)(() =>
09.
{
10.
Console.WriteLine("{0} say \"Hello\" at {1}",
11.
employee.FirstName+" "+employee.LastName,
12.
DateTime.UtcNow.ToString());
13.
});
14.
employee.SayHello();
15.
}
在上面的示例中我们将SayHello定义成委托Action类型,并给了默认方法。
下面来看一个有参数、有返回值的:
01.
[TestMethod]
02.
public void ExpandoObjectTest()
03.
{
04.
dynamic employee = new ExpandoObject();
05.
employee.FirstName = "Henry";
06.
employee.LastName = "Cui";
07.
employee.Age = 23;
08.
employee.SayHello = (Action)(() =>
09.
{ </

本文介绍了.NET4.0中的ExpandoObject如何动态添加、删除成员,包括属性、方法和事件。示例展示了如何将XML数据转换为ExpandoObject,以及如何进行查询和修改。此外,还探讨了ExpandoObject在处理XML时的挑战和解决方案。
最低0.47元/天 解锁文章
510

被折叠的 条评论
为什么被折叠?



