您的位置:首页 > 编程语言 > C#

C#中通过Type类访问数据类型信息

2014-04-15 22:25 393 查看

Type 类

表示类型声明:类类型、接口类型、数组类型、值类型、枚举类型、类型参数、泛型类型定义,以及开放或封闭构造的泛型类型。

Type初始化
Type 类的新实例
C#中通过Type类可以访问任意数据类型信息。

1.获取给定类型的Type引用有3种方式:

   a.使用typeof运算符,如Type t = typeof(int);

   b.使用GetType()方法,如int i;Type t = i.GetType();

   c.使用Type类的静态方法GetType(),如Type t =Type.GetType("System.Double");

2.Type的属性:

   Name:数据类型名;

   FullName:数据类型的完全限定名,包括命名空间;

   Namespace:数据类型的命名空间;

   BaseType:直接基本类型;

   UnderlyingSystemType:映射类型;

3.Type的方法:

   GetMethod():返回一个方法的信息;

   GetMethods():返回所有方法的信息。

TestType.cs:

[c#]
view plaincopyprint?

using System;  
using System.Reflection;  
  
namespace Magci.Test.Reflection  
{  
     public class TestType  
     {  
         public static void Main()  
         {  
             //基本数据类型  
             Type intType = typeof(int);  
              
             //属性  
             Console.WriteLine("intType.Name = " + intType.Name);  
             Console.WriteLine("intType.FullName = " + intType.FullName);  
             Console.WriteLine("intType.Namespace = " + intType.Namespace);  
             Console.WriteLine("intType.IsAbstract = " + intType.IsAbstract);  
             Console.WriteLine("intType.IsClass = " + intType.IsClass);  
             Console.WriteLine("intType.IsEnum = " + intType.IsEnum);  
             Console.WriteLine("intType.IsPrimitive = " + intType.IsPrimitive);  
             Console.WriteLine("intType.IsValueType = " + intType.IsValueType);  
  
             //方法  
             MethodInfo[] methods = intType.GetMethods();  
             foreach (MethodInfo method in methods)  
             {  
                 Console.WriteLine(method.DeclaringType + " " + method.MemberType + " " + method.Name);  
             }  
         }  
     }  
}  

using System;
using System.Reflection;

namespace Magci.Test.Reflection
{
     public class TestType
     {
         public static void Main()
         {
             //基本数据类型
             Type intType = typeof(int);
            
             //属性
             Console.WriteLine("intType.Name = " + intType.Name);
             Console.WriteLine("intType.FullName = " + intType.FullName);
             Console.WriteLine("intType.Namespace = " + intType.Namespace);
             Console.WriteLine("intType.IsAbstract = " + intType.IsAbstract);
             Console.WriteLine("intType.IsClass = " + intType.IsClass);
             Console.WriteLine("intType.IsEnum = " + intType.IsEnum);
             Console.WriteLine("intType.IsPrimitive = " + intType.IsPrimitive);
             Console.WriteLine("intType.IsValueType = " + intType.IsValueType);

             //方法
             MethodInfo[] methods = intType.GetMethods();
             foreach (MethodInfo method in methods)
             {
                 Console.WriteLine(method.DeclaringType + " " + method.MemberType + " " + method.Name);
             }
         }
     }
}


TestTypeView.cs:

[c#]
view plaincopyprint?

using System;  
using System.Text;  
using System.Windows.Forms;  
using System.Reflection;  
  
namespace Magci.Test.Reflection  
{  
     public class TestTypeView  
     {  
         public static StringBuilder OutputText = new StringBuilder();  
  
         public static void Main()  
         {  
             Type t = typeof(double);  
             AnalyzeType(t);  
             MessageBox.Show(OutputText.ToString());  
         }  
  
         public static void AnalyzeType(Type t)  
         {  
             //数据类型名  
             OutputText.Append("/nType Name: " + t.Name);  
             //数据类型的完全限定名,包括命名空间  
             OutputText.Append("/nFull Name: " + t.FullName);  
             //数据类型的命名空间  
             OutputText.Append("/nNamespace: " + t.Namespace);  
              
             //直接基本类型  
             Type tBase = t.BaseType;  
             if (tBase != null)  
             {  
                 OutputText.Append("/nBase Type: " + tBase.Name);  
             }  
              
             //映射类型  
             Type tUnderlyingSystem = t.UnderlyingSystemType;  
             if (tUnderlyingSystem != null)  
             {  
                 OutputText.Append("/nUnderlyingSystem Type: " + tUnderlyingSystem.Name);  
             }  
  
             //所有公共方法  
             OutputText.Append("/n/nPublic members:");  
             MemberInfo[] methods = t.GetMethods();  
             foreach (MemberInfo method in methods)  
             {  
                 OutputText.Append("/n" + method.DeclaringType + " " + method.MemberType + "" + method.Name);  
             }  
         }  
     }  
}  

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: