=====TestLib.dll文件内容========
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestLib
{
public class Class1
{
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
public void SayHi()
{
Console.WriteLine("大家好!");
}
public void AAA()
{
MyClass mc = new MyClass();
mc.BBB();
}
}
public interface IFlyable
{
void Fly();
}
public delegate void MyDelegate();
public enum Good
{
高,
富,
帅
}
internal class MyClass
{
internal void BBB()
{
Console.WriteLine("能看到吗》");
}
}
public class Person
{
public string Name
{
get;
set;
}
public int Age
{
get;
set;
}
public string Email
{
get;
set;
}
}
public class Chinese : Person, IZiWoXiuFu
{
//户口
public string HuKouSuoZaiDi
{
get;
set;
}
#region IZiWoXiuFu 成员
public void XiuFu()
{
Console.WriteLine("以毒攻毒,配平了。");
}
#endregion
}
public interface IZiWoXiuFu
{
void XiuFu();
}
public abstract class MyAbsClass
{
public abstract void SayHello();
}
public static class MyStaticClass
{
}
}
=====控制台program.cs文件内容========
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
namespace _10Type类型的一些方法介绍
{
class Program
{
static void Main(string[] args)
{
//1.动态加载程序集
Assembly asm = Assembly.LoadFile(@"C:\testlib.dll");
//2.1获取Chinese类型的Type
Type typChinese = asm.GetType("TestLib.Chinese");
//2.2获取Person类型的Type
Type typPerson = asm.GetType("TestLib.Person");
//2.3获取接口类型的Type
Type typIXiuFu = asm.GetType("TestLib.IZiWoXiuFu");
//2.4获取抽象类MyAbsClass的Type
Type typMyAbsClass = asm.GetType("TestLib.MyAbsClass");
//2.5获取静态类MyStaticClass的Type
Type typMyStaticClass = asm.GetType("TestLib.MyStaticClass");
#region IsAssignableFrom
//3.验证一下Person类型是不是Chinese类型的父类。
//验证是不是可以把typChinese类型的对象赋值给typPerson类型。
//bool b = typPerson.IsAssignableFrom(typChinese);
//Console.WriteLine(b);//true,因为Chinese继承了Person
判断是否可以将typChinese的对象赋值给typIXiuFu类型
//bool b = typIXiuFu.IsAssignableFrom(typChinese);
//Console.WriteLine(b);
#endregion
#region IsInstanceOfType
创建了一个typChinese类型的对象obj
//object obj = Activator.CreateInstance(typChinese);
//验证obj是不是typChinese类型的对象
bool b = typChinese.IsInstanceOfType(obj);
Console.WriteLine(b);//true
//验证obj是不是typPerson类型的对象
bool b = typPerson.IsInstanceOfType(obj);
Console.WriteLine(b);//true
//Console.ReadKey();
#endregion
#region IsSubclassOf
验证typChinese是否是typPerson的子类
bool b = typChinese.IsSubclassOf(typPerson);
Console.WriteLine(b);
判断typChinese是否是typIXiuFu的子类
IsSubclassOf不考虑接口,只考虑父子类关系。
//bool b = typChinese.IsSubclassOf(typIXiuFu);
//Console.WriteLine(b);
//Console.ReadKey();
#endregion
#region IsAbstract,判断某个类型是否是一个抽象的。
//Console.WriteLine(typChinese.IsAbstract);
//Console.WriteLine(typPerson.IsAbstract);
接口、抽象类、静态类都不能被实例化,所以这里都认为是“抽象的”
//Console.WriteLine(typIXiuFu.IsAbstract);
//Console.WriteLine(typMyAbsClass.IsAbstract);
//Console.WriteLine(typMyStaticClass.IsAbstract);
//Console.ReadKey();
#endregion
}
}
}