实例一:
Type ty = Assembly.Load("程序集名称/dll名称").GetType(string.Format("命名空间名称.{0}",FormOne");
T obj= (T)Activator.CreateInstance(ty);return obj;
实例二:
public class GetObject
{
/// <summary>
/// GetObject getobj = new GetObject("ConsoleApplication1", "ConsoleApplication1.Bll", "Sendmail");
/// object obj = GetObject.Dinstanceclass["Cacul"];
/// </summary>
public static Dictionary<string, object> Dinstanceclass = new Dictionary<string,object>();
public GetObject(string properties,string namespaces,string classname)
{
Assembly ass = Assembly.Load(properties);//程序集名称
Type ty=ass.GetType(string.Concat(namespaces,".",classname));//命名空间名称.类名
object obj=(object )Activator.CreateInstance(ty);//实例化对象(泛型) 后面可根据classname返回具体的类实例
if(!Dinstanceclass.ContainsKey(classname))
Dinstanceclass[classname] = obj;
}
}
本文介绍了两种在C#中根据配置文件动态加载程序集并实例化类的方法。第一种方法直接通过Assembly.Load加载指定dll并获取类型。第二种方法通过创建一个静态类GetObject,实现了根据程序集名称、命名空间和类名来动态实例化对象,并将其存储在字典中以供后续使用。
2046

被折叠的 条评论
为什么被折叠?



