创建接口
public interface ITypeTest{ int Num1 { get; set; } int Num2 { get; set; } void Add();}
创建类
public class TypeTest : ITypeTest{ public int Num1 { get; set; } public int Num2 { get; set; } public void Add() { Console.WriteLine(Num1+ Num2); }}
创建继承类
public class TypeTestExt : TypeTest{ public void Sub() { Console.WriteLine(Num1 - Num2); }}
获取类型(Type)
//从类中获取类型Type type = typeof(TypeTest);//从类变量中获取类型TypeTest tt = new TypeTest();Type type2 = tt.GetType();
从程序集中获取继承某个接口的类型
Type type = typeof(ITypeTest);IEnumerable<Type> types = AppDomain.CurrentDomain.GetAssemblies().SelectMany(e=>e.GetTypes().Where(v=>v.GetInterfaces().Contains(type)));foreach (Type item in types){ Console.WriteLine(item.FullName);}
从程序集中获取继承某个类的类型
Type type = typeof(TypeTest);IEnumerable<Type> types = AppDomain.CurrentDomain.GetAssemblies().SelectMany(e => e.GetTypes().Where(v => type.IsAssignableFrom(v) && type!=v));foreach (Type item in types){ Console.WriteLine(item.FullName);}
从类型中创建类
Type type = typeof(TypeTest);TypeTest tt = (TypeTest)System.Activator.CreateInstance(type);tt.Num1 = 10;tt.Num2 = 5;tt.Add();