I have a project that I am working on A series of classes that inherit a base class
First of all I can loop through the Properties and build a column list.
I am new to Reflection and just do not understand what is wrong
private void GetColumns(){ columnlist = new List<TableColumn>(); propInfoArray = GetType().GetProperties(); foreach (PropertyInfo propInfo in propInfoArray) { ColumnAttribute columnattribute = (ColumnAttribute)Attribute.GetCustomAttribute(propInfo, typeof(ColumnAttribute)); if (columnattribute != null) { columnlist.Add(new TableColumn(columnattribute.DbColumnName, propInfo.Name, propInfo.PropertyType, columnattribute.DataLoadSavePolicy, columnattribute.SqlType, columnattribute.ColumnFriendlyName, columnattribute.ColumnDescription)); } }}
I need to loop through a passed in DataRow and populate the values
private void LoadRow(object ObjectToLoad){ try { GetColumns(); foreach (TableColumn column in columnlist) { string fieldname = column.DbColumnName; FieldInfo fldInfo = ObjectToLoad.GetType().GetField(column.ClassPropertyName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic); } } catch (Exception ex) { string message = ex.Message; }}
[Column(DbColumnName = "ProductPagePath", DataLoadSavePolicy = ColumnAttribute.DataLoadSavePolicyEnum.Both, SqlType = SqlDbType.VarChar)]public String ProductPagePath{ get { return _productPagePath; } set { if (value != _productPagePath) { HasUnsavedChanges = true; _productPagePath = value; } }}
When I populate fldInfo it is always null. Here are the calues of the first item
ObjectToLoad {ePortal.Core.ProductProfile} object {ePortal.Core.ProductProfile}
column {ePortal.App_Code.TableColumn} ePortal.App_Code.TableColumn
fieldname "ProductPagePath" string
datarow.Table.Columns.List Count = 23 System.Collections.ArrayList
datarow.Table.Columns.List.[4] {ProductPagePath} object {System.Data.DataColumn}
datarow.ItemArray[4] "/printing/custom-bookmarks.aspx" object {string}
ObjectToLoad.ProductPagePath 'object' does not contain a definition for 'ProductPagePath' and no extension method 'ProductPagePath' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
((ePortal.Core.ProductProfile)(ObjectToLoad)).ProductPagePath null string