1、定义扩展对象
1: public static class ExtendMethod
2: {
3:
4: public static Type GetSingleGenericType(this Type t)
5: {
6: Type[] ts = GetGenericType(t);
7: if (ts == null) return null;
8: return ts[0];
9: }
10:
11: public static Type[] GetGenericType(this Type t)
12: {
13: if (!t.IsGenericType) return null;
14: List lt = new List ();
15: int begin = t.FullName.IndexOf('[');
16: int end = t.FullName.LastIndexOf(']');
17: string str = t.FullName.Substring(begin + 1, end - begin - 1);
18: while(true)
19: {
20: begin = str.IndexOf('[');
21: if (begin < 0) break;
22: lt.Add(Type.GetType(str.Substring(begin + 1, str.IndexOf(',') - 1)));
23: str = str.Remove(0, str.IndexOf(']') + 1);
24: str = str.TrimStart(',');
25: }
26: return lt.ToArray();
27: }
2、应用示例。
1: Type type = typeof(Dictionary<int, string>);
2: Type[] tS = type.GetGenericType();
这时tS中分别的System.Int32和System.String的Type对象。