¿Usando Reflection para crear una tabla de datos de una clase?

Acabo de aprender sobre genéricos y me pregunto si puedo usarlo para crear dinámicamente datos de mis clases.

O podría estar perdiendo el punto aquí. Aquí está mi código, lo que estoy tratando de hacer es crear una base de datos de mi clase existente y llenarla. Sin embargo me estoy atascando en mi proceso de pensamiento.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Data;

namespace Generics
{
    public class Dog
    {
        public string Breed { get; set; }
        public string Name { get; set; }
        public int legs { get; set; }
        public bool tail { get; set; }
    }

    class Program
    {
        public static DataTable CreateDataTable(Type animaltype)
        {
            DataTable return_Datatable = new DataTable();
            foreach (PropertyInfo info in animaltype.GetProperties())
            {
                return_Datatable.Columns.Add(new DataColumn(info.Name, info.PropertyType));
            }
            return return_Datatable;
        }

        static void Main(string[] args)
        {
            Dog Killer = new Dog();
            Killer.Breed = "Maltese Poodle";
            Killer.legs = 3;
            Killer.tail = false;
            Killer.Name = "Killer";

            DataTable dogTable = new DataTable();
            dogTable = CreateDataTable(Dog);
//How do I continue from here?


        }      
    }
}    

Ahora en elDataTable señalarlo errores. Además, como soy nuevo en Reflection and Generics, ¿cómo voy a llenar los datos con la clase Killer?

Respuestas a la pregunta(8)

Su respuesta a la pregunta