前言 今天為了程式能寫好看一點,一直在糾結怎麼指定動態泛型,
但是想想實用性好像不太大,可是把這技術忘掉太可惜XD
還是記錄下來,以防忘記
以下程式範例 類別 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 public class DynamicGeneric<T> where T : class , new() { public string Name { get ; set ; } public void SayHello ( ) { Console.WriteLine("Hello" ); } public T GetInstance ( ) { return new T(); } } public class MyClass1 { public string MyProperty { get ; set ; } public void MyMethod ( ) { Console.WriteLine("I'm Class1 Method" ); } }
執行過程 執行過程 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 static void Main (string [] args ) { var genericListType = typeof (DynamicGeneric<>); var specificListType = genericListType.MakeGenericType(typeof (MyClass1)); object instance = Activator.CreateInstance(specificListType); Type instanceType = instance.GetType(); string name = instanceType.InvokeMember( "Name" , System.Reflection.BindingFlags.GetProperty, null , instance, null ) as string ; instanceType.InvokeMember( "SayHello" , BindingFlags.InvokeMethod, null , instance, null ); }
參考資料 stackoverflow
dotblogs
msdn