Showing posts with label reflection. Show all posts
Showing posts with label reflection. Show all posts

Saturday, February 28, 2015

How to create instance of generic class using reflection

In this post I am going to show how to create instance of generic class using c# reflection.The trick is to use the MakeGenericType to make the argument(s) and then call create Instance. Here is a code snippet:

Type d1 = typeof(List<>);
 
Type[] typeArgs = { typeof(string) };
 
Type makeme = d1.MakeGenericType(typeArgs);
 
object o = Activator.CreateInstance(makeme);
 
List<string> itsMe = o as List<string>;

Sunday, February 22, 2015

How to convert DataSet to List

In this post I am going to show you a very useful c# code snippet that convert DataSet to List<T>.

 

   public static List<T> ToCollection<T>(this DataTable dt)
        {
            List<T> lst = new List<T>();
            Type tClass = typeof(T);
            PropertyInfo[] pClass = tClass.GetProperties();
            List<DataColumn> dc = dt.Columns.Cast<DataColumn>().ToList();
            T cn;
            foreach (DataRow item in dt.Rows)
            {
                cn = (T)Activator.CreateInstance(tClass);
                foreach (PropertyInfo pc in pClass)
                {
                  
                   DataColumn d = dc.Find(c => c.ColumnName == pc.Name);
                   if (d != null)
                   {
                       if (item[pc.Name] != DBNull.Value)
                       {
                           pc.SetValue(cn, (item[pc.Name]), null);
                       }
                   }   
                }
                lst.Add(cn);
            }
            return lst;
        }