1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| using System;
using System.Reflection;
namespace ConsoleApplication1
{
class Person
{
public string Name {get; set;}
public Person()
{
Name = "unknow";
}
public override string ToString()
{
return Name;
}
}
class Display
{
public void Print<T> () where T : new ()
{
T arg = new T();
Console.WriteLine(arg.ToString());
}
}
class Program
{
static void Main(string[] args)
{
Person person = new Person();
MethodInfo method = typeof(Display).GetMethod("Print");
MethodInfo generic = method.MakeGenericMethod(person.GetType());
generic.Invoke(new Display(), null);
}
}
} |