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

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>;

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;
        }