The reason for the error is because you are calling MyConvertDataRowToEntity(T item, string columnName, object rowValue) { var prefixColumn=columnName. IndexOf(". ")==-1?
ColumnName : columnName. Split(". ")0; var pi = typeof(T).
GetProperty(prefixColumn // Add your binding flags); // if pi==null then there is an error... if (column.ColumnName. IndexOf(". ") == (-1)) { // No Nesting pi.
SetValue(item,rowValue); return; } // Nesting var child=pi. GetValue(item); if (child==null) { // Logic here to get childs type and create an instance then call pi. SetValue with child } var remainder=string.
Join(',',columnName. Split(". ").
Skip(1).ToArray()); // make your generic method info for UpdateItemProperty with pi. PropertyType into mi mi. Invoke(null,new object { child,remainder,value }; }.
The reason for the error is because you are calling MyConvertDataRowToEntity but then passing in the getaccessor methodinfo for the property as the parameter instead of a data row containing only those fields. If you want to continue with the code processing logic you are currently using you would need to construct a new datarow containing the fields you wanted (with the prefix and ". ") removed from the start of the column names.
Alternatively you could create a helper method the accepted a column name, the source object and it simply updated the value. Static void UpdateItemProperty(T item, string columnName, object rowValue) { var prefixColumn=columnName. IndexOf(".")==-1?
ColumnName : columnName. Split(".")0; var pi = typeof(T). GetProperty(prefixColumn // Add your binding flags); // if pi==null then there is an error... if (column.ColumnName.
IndexOf(".") == (-1)) { // No Nesting pi. SetValue(item,rowValue); return; } // Nesting var child=pi. GetValue(item); if (child==null) { // Logic here to get childs type and create an instance then call pi.
SetValue with child } var remainder=string. Join(',',columnName. Split(".").
Skip(1).ToArray()); // make your generic method info for UpdateItemProperty with pi. PropertyType into mi mi. Invoke(null,new object { child,remainder,value }; }.
Thank you for the response. The problem is not the modification of the data , but sending the parameter through . I mean that when I invoke the method with childType I can't send the row through.It fails with : " 'System.Reflection.
RuntimeMethodInfo' cannot be converted to type 'System.Data. DataRow'." That's the trouble!
– Gregory Jul 24 at 4:40 The whole point of my response is that your invoke line is passing the method info for the property as a parameter and NOT a datarow which is what the method needs. Are you needing to invoke the getmethod first to get the return value? – Bob Vale Jul 24 at 11:19 Maybe I was not clear with my problem.
I have an hierarchical object with children . When I meet some property in my object that is Strongly Typed I'd like to perform MyConvertDataRowToEntity on that property recursively . I'll try out the datarow creation only of relevant columns and get back to you .
Thanks a lot for your help! – Gregory Jul 26 at 12:15.
I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.