如何使用反射動態(tài)創(chuàng)建通用C對象?在C#中,我有以下對象:public class Item{ }public class Task<T>{ }public class TaskA<T> : Task<T>{ }public class TaskB<T> : Task<T>{ }我希望使用C#反射動態(tài)地創(chuàng)建TASCA或TaskB(Activator.CreateInstance)。但是,我不知道手之前的類型,所以我需要基于字符串(如“Nampace.askA”或“Nampacet.askAB”)動態(tài)創(chuàng)建TASKA。
3 回答

慕容708150
TA貢獻1831條經(jīng)驗 獲得超4個贊
public interface ITask { void Process(object o);}public class Task<T> : ITask{ void ITask.Process(object o) { if(o is T) // Just to be sure, and maybe throw an exception Process(o as T); } public void Process(T o) { }}
Type d1 = Type.GetType("TaskA"); //or "TaskB"Type[] typeArgs = { typeof(Item) }; Type makeme = d1.MakeGenericType(typeArgs);ITask task = Activator.CreateInstance(makeme) as ITask; // This can be Item, or any type derived from Itemtask.Process(new Item());

aluckdog
TA貢獻1847條經(jīng)驗 獲得超7個贊
public Task <T> factory (String name){ Task <T> result; if (name.CompareTo ("A") == 0) { result = new TaskA (); } else if (name.CompareTo ("B") == 0) { result = new TaskB (); } return result;}
- 3 回答
- 0 關(guān)注
- 566 瀏覽
添加回答
舉報
0/150
提交
取消