Assembly最重要的用法就是程序集反射类,并创建类对象
下面通过domain获得所有程序集
再遍历程序集内所有的类型,拿到Type
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly assembly in assemblies)
{Type[] types = assembly.GetTypes();foreach (Type type in types){。。。。}
}
拿到Type后,就可以根据type创建对象了。
Type与Attribute的用法
//自定义Attribute
[AttributeUsage(AttributeTargets.Class)]
public class TypeNameAttribute : Attribute
{public string typeName { get; set; }public TypeNameAttribute(string type){typeName = type;}
}
[TypeName("TestTypeNameClass")]
public class MyClass
{public MyClass(){}
}
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly assembly in assemblies)
{Type[] types = assembly.GetTypes();foreach (Type type in types){TypeNameAttribute attribute = type.GetCustomAttribute<TypeNameAttribute>();if (attribute != null) //如果这个Class添加了TypeNameAttribute,则attribute创建不为空{var instance = Activator.CreateInstance(type);}}
}
上文Activator.CreateInstance得到的结果会是我们自定义创建的MyClass对象。