反射点滴Common


构造函数加载类集

public Common()
  {
   SampleAssembly = Assembly.Load("NHClass");          //根据程序集名称得到相应程序集
  }

简单方法举例

/// <summary>
  /// 用于存储信息
  /// </summary>
  /// <param name="ht">基本信息列表</param>
  /// <param name="ClassName">完整的类名(包括命名空间和类名)</param>
  /// <returns>新增记录的ID</returns>
  #region 用于存储信息
  public int Save(Hashtable ht,string ClassName)
  {
   int returnvalue = -1;         //返回值,新增记录的ID 
   try
   {
    Type Class = SampleAssembly.GetType(ClassName);     //根据类名得到相应的类
    EntityObject obj = (EntityObject)Activator.CreateInstance(Class);  //得到相应类的实例

    myPropertyInfo = Class.GetProperties(System.Reflection.BindingFlags.Public|System.Reflection.BindingFlags.Instance);      //由反射得到相应类的属性
    foreach(System.Reflection.PropertyInfo pi in myPropertyInfo)    //对传入的数据和类的属性相比较和赋值
    {
     if(ht.Contains(pi.Name))
     {pi.SetValue(obj,ht[pi.Name],null);}
    }

    obj.Save();           //执行类实例的save方法
   }
   catch(PlException ex)
   {
    if(ex.ErrorType == ErrorTypes.NotUnique)
    {throw new Exception("主键冲突!");}
    else{throw new Exception(ex.Message);}    //返回错误信息
   }
   return returnvalue;
  }
  #endregion

原文地址:https://www.cnblogs.com/xh831213/p/326567.html