创建接口

  1. public interface ITypeTest
  2. {
  3. int Num1 { get; set; }
  4. int Num2 { get; set; }
  5. void Add();
  6. }

创建类

  1. public class TypeTest : ITypeTest
  2. {
  3. public int Num1 { get; set; }
  4. public int Num2 { get; set; }
  5. public void Add()
  6. {
  7. Console.WriteLine(Num1+ Num2);
  8. }
  9. }

创建继承类

  1. public class TypeTestExt : TypeTest
  2. {
  3. public void Sub()
  4. {
  5. Console.WriteLine(Num1 - Num2);
  6. }
  7. }

获取类型(Type)

  1. //从类中获取类型
  2. Type type = typeof(TypeTest);
  3. //从类变量中获取类型
  4. TypeTest tt = new TypeTest();
  5. Type type2 = tt.GetType();

从程序集中获取继承某个接口的类型

  1. Type type = typeof(ITypeTest);
  2. IEnumerable<Type> types = AppDomain.CurrentDomain.GetAssemblies().SelectMany(e=>e.GetTypes().Where(v=>v.GetInterfaces().Contains(type)));
  3. foreach (Type item in types)
  4. {
  5. Console.WriteLine(item.FullName);
  6. }

从程序集中获取继承某个类的类型

  1. Type type = typeof(TypeTest);
  2. IEnumerable<Type> types = AppDomain.CurrentDomain.GetAssemblies().SelectMany(e => e.GetTypes().Where(v => type.IsAssignableFrom(v) && type!=v));
  3. foreach (Type item in types)
  4. {
  5. Console.WriteLine(item.FullName);
  6. }

从类型中创建类

  1. Type type = typeof(TypeTest);
  2. TypeTest tt = (TypeTest)System.Activator.CreateInstance(type);
  3. tt.Num1 = 10;
  4. tt.Num2 = 5;
  5. tt.Add();