Example #1
0
 private void GetParamFromReader(PropertyInfo[] properties, CoreBase clone, System.Data.IDataReader idr)
 {
     foreach (PropertyInfo info in properties)
     {
         if (!info.PropertyType.IsPrimitive && !info.PropertyType.IsValueType && info.PropertyType != typeof(System.String) && info.PropertyType != typeof(System.Text.StringBuilder) && info.Name.Substring(info.Name.Length - 2, 2) != "_P" && !info.PropertyType.IsGenericType)
         {
             if (info.PropertyType.ToString() == "System.Byte[]")
             {
                 //clone.GetType().GetProperty(info.Name).SetValue(clone, idr[info.Name], null);
             }
             else
             {
                 Type childType = info.PropertyType;
                 //CoreBase childClone = (CoreBase)Activator.CreateInstance(childType);
                 CoreBase childClone = GetParamFromReader(childType, idr);
                 //Type t1 = childClone.GetType();
                 //info.PropertyType.InvokeMember(
                 //clone.GetType().GetProperty(info.Name).SetValue(clone, ((childType)childClone), null);
                 MethodInfo castMethod = this.GetType().GetMethod("Cast").MakeGenericMethod(childType);
                 //object castedObject = castMethod.Invoke(null, new object[] { childClone });
                 clone.GetType().GetProperty(info.Name).SetValue(clone, castMethod.Invoke(null, new object[] { childClone }), null);
                 //clone.GetType().GetProperty(info.Name).SetValue(clone, Cast<XMBank.Core.CompanySetup.Company>(childClone), null);
             }
         }
         else
         {
             //info.Name  exists in dataReader
             if (DataRecordExtensions.HasColumn(idr, info.Name) && !DataRecordExtensions.IsNull(idr, info.Name))
             {
                 clone.GetType().GetProperty(info.Name).SetValue(clone, idr[info.Name], null);
             }
         }
     }
 }
Example #2
0
        public CoreBase GetObjectByID()
        {
            System.Data.IDataReader idr = null;
            ParameterManager        Params;

            try
            {
                Params = new ParameterManager(this._DMLCore);
                IDatabaseHelper helper = new DatabaseFactory().CreateDBHelper(base.DBType, StoredProcedureName);
                //idr = helper.ExecuteReader(Params.Parameters);
                using (idr = helper.ExecuteReader(Params.Parameters))
                {
                    if (idr.Read())
                    {
                        Type           coreType   = _DMLCore.GetType();
                        PropertyInfo[] properties = coreType.GetProperties();
                        foreach (PropertyInfo info in properties)
                        {
                            //info.Name  exists in dataReader
                            if (DataRecordExtensions.HasColumn(idr, info.Name) && !DataRecordExtensions.IsNull(idr, info.Name))
                            {
                                coreType.GetProperty(info.Name).SetValue(_DMLCore, idr[info.Name], null);
                            }
                        }
                        //coreType.GetProperty("").SetValue(_DMLCore, "", null);
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                //if (idr != null)
                //{
                //    idr.Close();
                //    idr.Dispose();
                //}
            }

            return(_DMLCore);
        }