您的位置:首页 > 编程语言 > C#

C# 根据对象类完整名称,创建对象实例

2014-11-22 01:58 197 查看
转自:http://blog.csdn.net/mm33211/article/details/8143890

C# 根据对象类完整名称,创建对象实例

/// <summary>
/// 根据指定的类全名,返回对象实例
/// </summary>
/// <param name="objFullName">对象完整名称(包名和类名),如:com.xxx.Test</param>
public object createObjectInstance(string objFullName)
{
//获取当前目录
string currentDir = Assembly.GetExecutingAssembly().Location;
currentDir = currentDir.Substring(0, currentDir.LastIndexOf('\\'));
DirectoryInfo di = new DirectoryInfo(currentDir);
//获取当前目录下的所有DLL文件
FileInfo[] files = di.GetFiles("*.dll");//只查.dll文件
//遍历所有文件,查找需要对象的实现定义
Type type = Type.GetType(objFullName);
if (type == null)
{
foreach (FileInfo fi in files)
{
type = getObjectType(fi.FullName, objFullName);
if (type != null)
{
break;
}
}
}
if (type == null)
{
//throw new Exception("can not find class define of " + objFullName);
return null;
}
//将对象实例化
object obj=Activator.CreateInstance(type);
return obj;
}
/// <summary>
/// 从DLL文件中查找指定的对象定义
/// </summary>
/// <param name="dllFile">DLL文件路径</param>
/// <param name="objFullName">对象完整名称(包名和类名),如:com.xxx.Test</param>
/// <returns>如果找到,返回其对应的Type;如果没找到,则返回null</returns>
private Type getObjectType(string dllFile, string objFullName)
{
Type type = Assembly.LoadFile(dllFile).GetType(objFullName);
if (type != null)
{
Console.WriteLine("find obj in dll[" + dllFile + "]");
return type;
}
return null;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: