创建接口
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();