using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace 基于System.Type的反射
{
class Program
{
static void Main(string[] args)
{
//1.使用GetType() 反射类型
string a = "Hello world.";
Type t = a.GetType();
Console.WriteLine(t.FullName);
//2.使用Type.GetType() 反射类型
Type t1 = Type.GetType("System.String", false, true);
Console.WriteLine(t1.FullName);
//3.使用typeof获取类型
Type t2 = typeof(string);
Console.WriteLine(t2.FullName);
//通过方法获取对象的方法
GetMethods(t, BindingFlags.Public | BindingFlags.Instance);
// Console.WriteLine("join Methods:{0}",t.GetMethod("Copy"));
// Console.WriteLine("-----------------------------------------------------------");
// //知识点补充:抽象类不能实例化
#region 动态加载程序集
// //动态加载.net2.0所有程序集,并获取所有类型
Assembly objAssembly;
objAssembly = Assembly.Load("mscorlib,2.0.0.0,Neutral,b77a5c5619934e089");
Type[] types = objAssembly.GetTypes();
foreach (var t3 in types)
{
Console.WriteLine(t3.Name);
}
//获取当前执行的程序集
objAssembly = Assembly.GetExecutingAssembly();
//检查对象(基于System.Type的反射.car)
Type t4 = objAssembly.GetType("基于System.Type的反射.car", false, true);
//创建一个当前对象的实例
object obj = Activator.CreateInstance(t4);
//获取当前对象中存在的方法
MethodInfo mi = t4.GetMethod("IsMoveing");
//判断当前对象是否存在指定的方法 obj指实例化对象,null指IsMoveing()的参数
var ismoving = (bool)mi.Invoke(obj, null);
if(ismoving)
{
Console.WriteLine("Yes");
}
else
{
Console.WriteLine("NO");
}
#endregion
Console.ReadLine();
}
/// <summary>
/// 获取对象的所有方法 GetProperty()获取所有属性 GetFields()获取所有字段
/// </summary>
/// <param name="t"></param>
public static void GetMethods(Type t,BindingFlags f)
{
MethodInfo[] mi = t.GetMethods(f);
foreach (MethodInfo item in mi)
{
Console.WriteLine("{0}",item.Name);
}
}
}
class car
{
public bool IsMoveing()
{
return true;
}
}
}
C#反射机制 Type类型
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 打动人心 灵感、构思和执行是创新的三个空间,失败得越多越早,成功就越快来临。我们都厌恶约束限制,但是有约束,...