WEB开发网
开发学院软件开发C语言 为List添加排序的函数处理并列排名情况(上篇) 阅读

为List添加排序的函数处理并列排名情况(上篇)

 2009-05-21 08:30:02 来源:WEB开发网   
核心提示: 这样就可以创建一个动态类型了创建一个动态类型远远不够 还需要为这个动态类型赋值 还要获得一个类型的说有属性和返回值的方法先写动态的赋值方法. 动态赋值需要什么 ? 类型, 属性名称和值 /// <summary> /// 为一个类型实例化并赋值返回 /// </summa

这样就可以创建一个动态类型了 

创建一个动态类型远远不够  还需要为这个动态类型赋值   还要获得一个类型的说有属性和返回值的方法

先写动态的赋值方法.  动态赋值需要什么 ?  类型, 属性名称和值

  /// <summary>
        /// 为一个类型实例化并赋值返回
        /// </summary>
        /// <param name="type">类型</param>
        /// <param name="value">属性名称和值</param>
        /// <returns></returns>
        private static object DynamicSetProperty(Type type, Dictionary<string, object> value)
        {
            //创建类型的实例
            object o = type.GetConstructor(Type.EmptyTypes).Invoke(null);
            foreach (var item in value)
            {
                //设置值
                o.GetType().GetProperty(item.Key).SetValue(o, item.Value, null);
            }
            return o;
        }

动态的获取一个类型的属性和值也类似 只不过是  传递对象 返回属性名称和值

       /// <summary>
        /// 获得一个类型的属性名称和值
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static Dictionary<string, object> DynamicGetProperty(object obj)
        {
            Dictionary<string, object> temp = new Dictionary<string, object>();
            //获得说有公开属性 并把属性名称作为Key  值作为Value
            Array.ForEach<PropertyInfo>(obj.GetType().GetProperties(), p => temp.Add(p.Name, p.GetValue(obj, null)));
            return temp;
        }

动态的创建类型 、设置值、获取值的方法都有了。 我们还需要什么方法。。

我们还需要一个获取一个类型的属性名称和返回值的方法

        /// <summary>
        /// 将一个类型的所有公开的属性 和返回类型 放入Dictionary内
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        private static Dictionary<string, string> TypeTransform(Type type)
        {
            Dictionary<string, string> dictionary = new Dictionary<string, string>();
            //获得说有公开属性 并把属性名称作为Key  值作为Value
            Array.ForEach<PropertyInfo>(type.GetProperties(), p => dictionary.Add(p.Name, p.PropertyType.FullName));
            return dictionary;
        }

这时  动态创建类型  、动态设置值 、动态获取值  动态获取属性和返回值的方法完成了。

上一页  1 2 3 

Tags:List 添加 排序

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接