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