1. 程式人生 > >如何實現泛型帶引數例項化

如何實現泛型帶引數例項化

        為了偷懶,用泛型寫了一個列表類,但是在例項化T的時候遇到了莫大的問題。微軟自帶的new約束明確表示:new 約束指定泛型類宣告中的任何型別引數都必須有公共的無引數建構函式。然後經過我3分鐘的冥思苦想,終於繞開了這個奇葩的東西,實現了我的偷懶目標。下面上程式碼:

namespace 我的名稱空間
{
    public class ListBase<T>
    {
        ......
        private List<T> _items = new List<T>();

        public ListBase(string key)
        {
            string[] lines = GetArray(key);
            for (int i = 0; i < lines.Length; i++)
            {
                T t;
                t = (T)Assembly.Load("我的名稱空間").CreateInstance(typeof(T).ToString(), false, BindingFlags.CreateInstance, null, new object[] { lines[i] }, null, null);
                this._items.Add(t);
            }
        }

        public List<T> Items
        {
            get { return _items; }
        }

        protected string[] GetArray(string key)
        {
            ......
        }
    }
}