zoukankan      html  css  js  c++  java
  • 返回集合

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Data;
    using System.Reflection;
    using System.Collections;
    using System.Data.Common;
    using System.Diagnostics;
    
    namespace ceDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
         
                
                List<csDemp> mdList = sp.GetDataInstanceList<csDemp>();
    
              
            }
        }
    
        public static class PropertyExtensions
        {
            public static void FastSetValue(this PropertyInfo propertyInfo, object obj, object value)
            {
                if (propertyInfo == null)
                {
                    throw new ArgumentNullException("propertyInfo");
                }
                GetterSetterFactory.GetPropertySetterWrapper(propertyInfo).Set(obj, value);
            }
        }
    
        public static class GetterSetterFactory
        {
            private static readonly Hashtable s_setterDict = Hashtable.Synchronized(new Hashtable(1024));
            internal interface ISetValue
            {
                void Set(object target, object val);
            }
    
            internal static ISetValue GetPropertySetterWrapper(PropertyInfo propertyInfo)
            {
                var property = (ISetValue)s_setterDict[propertyInfo];
                if (property == null)
                {
                    property = CreatePropertySetterWrapper(propertyInfo);
                    s_setterDict[propertyInfo] = property;
                }
                return property;
            }
    
            internal static ISetValue CreatePropertySetterWrapper(PropertyInfo propertyInfo)
            {
                if (propertyInfo == null)
                {
                    throw new ArgumentNullException("propertyInfo");
                }
                if (propertyInfo.CanWrite == false)
                {
                    throw new NotSupportedException("属性不支持写操作。");
                }
                var mi = propertyInfo.GetSetMethod(true);
    
                if (mi.GetParameters().Length > 1)
                {
                    throw new NotSupportedException("不支持构造索引器属性的委托。");
                }
                var instanceType = typeof(SetterWrapper<,>).MakeGenericType(propertyInfo.DeclaringType, propertyInfo.PropertyType);
                return (ISetValue)Activator.CreateInstance(instanceType, propertyInfo);
            }
    
            public static void Clear()
            {
                s_setterDict.Clear();
            }
        }
    
        public class SetterWrapper<TTarget, TValue> : GetterSetterFactory.ISetValue
        {
            private Action<TTarget, TValue> _setter;
    
            public SetterWrapper(PropertyInfo propertyInfo)
            {
                if (propertyInfo == null)
                {
                    throw new ArgumentNullException("propertyInfo");
                }
                if (propertyInfo.CanWrite == false)
                {
                    throw new NotSupportedException("属性不支持写操作。");
                }
                var m = propertyInfo.GetSetMethod(true);
                _setter = (Action<TTarget, TValue>)Delegate.CreateDelegate(typeof(Action<TTarget, TValue>), null, m);
            }
    
            public void SetValue(TTarget target, TValue val)
            {
                _setter(target, val);
            }
    
            public void Set(object target, object val)
            {
                _setter((TTarget)target, (TValue)val);
            }
        }
    
    
        public class sp
        {
            /// <summary>
            /// 获取实体列表
            /// </summary>
            /// <typeparam name="T">类型</typeparam>
            /// <param name="functionName">方法名</param>
            /// <param name="paramList">参数列表</param>
            /// <returns>实体列表</returns>
            public static List<T> GetDataInstanceList<T>()
            {
                List<T> lists = new List<T>();
    
                DataTable dt = new DataTable();
                dt.Columns.Add(new DataColumn("id"));
                dt.Columns.Add(new DataColumn("Name"));
                DataRow row0 = dt.NewRow();
                row0[0] = "1";
                row0[1] = "张三";
                dt.Rows.Add(row0);
    
                DataRow row3 = dt.NewRow();
                row3[0] = "2";
                row3[1] = "李四";
                dt.Rows.Add(row3);
    
    
                DataRow row5 = dt.NewRow();
                row5[0] = "3";
                row5[1] = "王五";
                dt.Rows.Add(row5);
    
                var dataType = typeof(T);
                var infos = dataType.GetProperties(BindingFlags.Instance | BindingFlags.Public);
    
    
                foreach (DataRow row in dt.Rows.AsParallel())
                {
                    var obj =(T)Activator.CreateInstance(dataType);
                    foreach (DataColumn col in dt.Columns.AsParallel())
                    {
                        try
                        {
                            foreach (PropertyInfo info in infos)
                            {
                                if (info.Name.ToLower() == col.ColumnName.ToLower())
                                {
                                    if (row[col].GetType().FullName != "System.DBNull")
                                    {
                                        info.FastSetValue(obj, row[col]);
                                    }
                                }
                            }
                        }
                        catch
                        {
                        }
                    }
                    lists.Add(obj);
                }
                GetterSetterFactory.Clear();
                return lists;
            }
    
    
            public static T GetCopy<T>() 
            {
                var obj = typeof(T);
                var tar_obj = (T)Activator.CreateInstance(obj);
                Type typeinstance = obj.GetType();
                foreach (PropertyInfo property in typeinstance.GetProperties())
                {
                    property.SetValue(tar_obj, property.GetValue(obj, null), null);
                }
                return tar_obj;
    
            }
        }
    
    
        public class csDemp
        {
            public string id { get; set; }
    
            public string name { get; set; }
        }
    
    
    
    
    }
  • 相关阅读:
    AC自己主动机
    curl命令具体解释
    javascript事件和事件处理
    STM32 水晶不摇
    Play Modules Morphia 1.2.9a 之 Aggregation and Group aggregation
    菜板 动态规划
    姿势体系结构的详细解释 -- C
    有情无情胜, 大家是不是谁谁谁的意外
    S性能 Sigmoid Function or Logistic Function
    iOS 中国排序
  • 原文地址:https://www.cnblogs.com/y112102/p/3925132.html
Copyright © 2011-2022 走看看