代碼如下,問題就出在紅字部分:
Code
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace Test
{
class CT { }
class CT1:CT { }
class CT2 : CT { }
class CT3 : CT { }
class CT4 : CT { }
class CT5 : CT { }
class CT6 : CT { }
class Base<T> : List<T> where T : CT { }
class class1: Base<CT1> { }
class class2: Base<CT2> { }
class class3: Base<CT3> { }
class class4: Base<CT4> { }
class class5: Base<CT5> { }
class class6: Base<CT6> { }
class test<T> where T : CT
{
private static Dictionary<string, Base<T>> d;
private static object obj = new object();
public static Dictionary<string, Base<T>> Caches
{
get
{
if (d == null)
{
lock (obj)
{
if (d == null)
Load();
}
}
return d;
}
}
private static void Load()
{
Type[] tys = Assembly.GetExecutingAssembly().GetTypes();
foreach (Type t in tys)
if (t.BaseType.Name == "Base`1")
{
XX x = (XX)Assembly.GetExecutingAssembly().CreateInstance("Test." + t.Name);
d.Add(t.Name, x);
}
}
}
}
兩個 XX 應該是什麼,怎麼寫?我頭疼了半天,試了好幾種方法,還是沒搞定,請教各位,致謝先~