类帮助文件
来源:互联网 发布:樱桃初夏网络剧 编辑:程序博客网 时间:2024/05/22 08:29
public partial class ClassHelper
{
public static object GetObject(string className, params object[] paras)
{
return GetObject<object>(className, paras);
}
public static T GetObject<T>(string className, params object[] paras)
where T : class
{
Type type = GetType(className);
return GetObject<T>(type, paras);
}
public static T GetObject<T>(Type type, params object[] paras)
where T : class
{
if (type == null)
{
return null;
}
List<Type> paraTypes = new List<Type>();
for (int i = 0; i < paras.Length; i++)
{
object para = paras[i];
if (para == null)
{
throw new Exception("利用构造函数生成类时,参数不能为null");
}
Type pt = para.GetType();
paraTypes.Add(pt);
}
ConstructorInfo ci = type.GetConstructor(paraTypes.ToArray());
object obj = ci.Invoke(paras);
return obj as T;
}
public static Type GetType(string vClassName)
{
string vAssembly = string.Empty;
if (vClassName.IndexOf(',') > -1)
{
string[] collection = vClassName.Split(new char[]
{
','
});
List<string> list = new List<string>();
list.AddRange(collection);
vClassName = list[0];
list.RemoveAt(0);
string text = string.Join(",", list.ToArray()).Trim();
vAssembly = text;
if (text.ToLower().EndsWith(".dll"))
{
}
else
{
vAssembly = text;
}
}
vClassName = vClassName.Trim();
Assembly ass = GetAssemble(vAssembly);
return GetType(ass, vClassName);
}
public static Type GetType(Assembly vAssembly, string vTypeName)
{
if (string.IsNullOrEmpty(vTypeName))
{
return null;
}
vTypeName = vTypeName.Trim();
Type type = vAssembly.GetType(vTypeName);
if (type == null)
{
string vAssName = vAssembly.FullName;
int vPos = vAssName.IndexOf(",");
if (vPos > 0)
{
vAssName = vAssName.Substring(0, vPos);
}
throw PiaostException.Create("[{0}]中不存在类[{1}]", vAssName, vTypeName);
}
return type;
}
public static Assembly GetAssemble(string vAssembly)
{
if (string.IsNullOrEmpty(vAssembly))
{
return GetDefaultAssemble();
}
else if (vAssembly.ToLower().Trim().EndsWith(".dll"))
{
return GetAssembleWithDll(vAssembly);
}
else
{
return GetAssembleWithAssembly(vAssembly);
}
}
public static Assembly GetAssembleWithDll(string vDll)
{
if (string.IsNullOrEmpty(vDll))
{
return GetDefaultAssemble();
}
vDll = vDll.Trim();
Assembly assembly = null;
try
{
assembly = Assembly.LoadFrom(vDll);
}
catch { }
if (assembly == null)
{
throw new Exception("程序集[" + vDll + "]不存在!");
}
return assembly;
}
public static Assembly GetAssembleWithAssembly(string vAssemblyName)
{
if (string.IsNullOrEmpty(vAssemblyName))
{
return GetDefaultAssemble();
}
vAssemblyName = vAssemblyName.Trim();
Assembly assembly = null;
try
{
assembly = Assembly.Load(vAssemblyName);
}
catch { }
if (assembly == null)
{
throw new Exception("命名空间[" + vAssemblyName + "]不存在!");
}
return assembly;
}
private static Assembly GetDefaultAssemble()
{
return Assembly.GetExecutingAssembly();
}
}
{
public static object GetObject(string className, params object[] paras)
{
return GetObject<object>(className, paras);
}
public static T GetObject<T>(string className, params object[] paras)
where T : class
{
Type type = GetType(className);
return GetObject<T>(type, paras);
}
public static T GetObject<T>(Type type, params object[] paras)
where T : class
{
if (type == null)
{
return null;
}
List<Type> paraTypes = new List<Type>();
for (int i = 0; i < paras.Length; i++)
{
object para = paras[i];
if (para == null)
{
throw new Exception("利用构造函数生成类时,参数不能为null");
}
Type pt = para.GetType();
paraTypes.Add(pt);
}
ConstructorInfo ci = type.GetConstructor(paraTypes.ToArray());
object obj = ci.Invoke(paras);
return obj as T;
}
public static Type GetType(string vClassName)
{
string vAssembly = string.Empty;
if (vClassName.IndexOf(',') > -1)
{
string[] collection = vClassName.Split(new char[]
{
','
});
List<string> list = new List<string>();
list.AddRange(collection);
vClassName = list[0];
list.RemoveAt(0);
string text = string.Join(",", list.ToArray()).Trim();
vAssembly = text;
if (text.ToLower().EndsWith(".dll"))
{
}
else
{
vAssembly = text;
}
}
vClassName = vClassName.Trim();
Assembly ass = GetAssemble(vAssembly);
return GetType(ass, vClassName);
}
public static Type GetType(Assembly vAssembly, string vTypeName)
{
if (string.IsNullOrEmpty(vTypeName))
{
return null;
}
vTypeName = vTypeName.Trim();
Type type = vAssembly.GetType(vTypeName);
if (type == null)
{
string vAssName = vAssembly.FullName;
int vPos = vAssName.IndexOf(",");
if (vPos > 0)
{
vAssName = vAssName.Substring(0, vPos);
}
throw PiaostException.Create("[{0}]中不存在类[{1}]", vAssName, vTypeName);
}
return type;
}
public static Assembly GetAssemble(string vAssembly)
{
if (string.IsNullOrEmpty(vAssembly))
{
return GetDefaultAssemble();
}
else if (vAssembly.ToLower().Trim().EndsWith(".dll"))
{
return GetAssembleWithDll(vAssembly);
}
else
{
return GetAssembleWithAssembly(vAssembly);
}
}
public static Assembly GetAssembleWithDll(string vDll)
{
if (string.IsNullOrEmpty(vDll))
{
return GetDefaultAssemble();
}
vDll = vDll.Trim();
Assembly assembly = null;
try
{
assembly = Assembly.LoadFrom(vDll);
}
catch { }
if (assembly == null)
{
throw new Exception("程序集[" + vDll + "]不存在!");
}
return assembly;
}
public static Assembly GetAssembleWithAssembly(string vAssemblyName)
{
if (string.IsNullOrEmpty(vAssemblyName))
{
return GetDefaultAssemble();
}
vAssemblyName = vAssemblyName.Trim();
Assembly assembly = null;
try
{
assembly = Assembly.Load(vAssemblyName);
}
catch { }
if (assembly == null)
{
throw new Exception("命名空间[" + vAssemblyName + "]不存在!");
}
return assembly;
}
private static Assembly GetDefaultAssemble()
{
return Assembly.GetExecutingAssembly();
}
}
0 0
- 类帮助文件
- 公用帮助文件处理类
- 帮助文件
- EDS帮助文件
- CHM帮助文件
- UBoot帮助文件
- PHP帮助文件
- Xml帮助文件
- oclumon帮助文件
- vim帮助文件
- Crystal Report 其他帮助文件
- Java核心包帮助文件
- Tanghan Plugin帮助文件
- Crystal Report 其他帮助文件
- 圆摆线帮助文件
- 如何调用.chm帮助文件
- 制作CHM帮助文件
- 帮助文件的调用
- 文章标题
- windows 位图结构详解
- java 发送邮件的4种方式
- nc 系统 发送 XML
- 利用百度开发者中心完成的 第三方登录
- 类帮助文件
- 第四章上机3-5
- 第十六周项目1---验证算法(排序)
- 1209
- es6 javascript的class的静态方法、属性和实例属性
- TCP echo test
- C# 输入验证
- POJ 1862 Stripies 笔记
- MemCache缓存multiget hole详解