您的位置:首页 > 其它

Type对象获得泛型类型的两个扩展方法

2011-04-11 16:38 399 查看
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:      }


.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

2、应用示例。

1:  Type type = typeof(Dictionary);


2:  Type[] tS = type.GetGenericType();


.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

这时tS中分别的System.Int32和System.String的Type对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐