Ευχαριστώ για την άμεση απάντηση .
Επειδή είχα φτιάξει και μία κλάση που κληρονομούσε την κλάση Attributes όπου μέσα σ' αυτή είχα φτιάξει μία method public void object[,] GetFields(Type t) αλλά δεν την έκανα Serializable δεν έτρεχε ο κώδικας.
Κατόπιν χρησιμοποίησα την MethodInfo για να τρέξω την GetFields(Type t) . Παρακάτω ο κώδικας που χρησιμοποίησα.
public static Object DynamicGetFields(String AssemplyName, String ObjectName)
{
Assembly a = Assembly.Load(AssemplyName);
Type t = a.GetType(ObjectName);
object obj = Activator.CreateInstance(t);
MethodInfo myMethod = obj.GetType().GetMethod("GetFields");
object[] myParameters = new object[1];
myParameters[0] = t;
object[,] mFields = (object[,])myMethod.Invoke(obj, myParameters);
return mFields;
}
Παρακάτω η της Μεθόδου GetFields από την κλάση που κληρονομεί την Attributes
public object[,] GetFields(Type t)
{
PropertyInfo[] oFields = t.GetProperties();
PropertyInfo oField = default(PropertyInfo);
Attribute[] attributes = null;
object[,] StructureInfo = new object[oFields.Length, 2];
try
{
for (int i = 0; i <= oFields.Length - 1; i++)
{
oField = oFields[ι];
attributes = Attribute.GetCustomAttributes(oField, typeof(ColumnAttributes), false);
StructureInfo[i, 0] = oField;
StructureInfo[i, 1] = attributes;
}
}
catch (Exception e)
{
DbHelper.DataHelper.ClsMisc.WriteLog((int)LogType.idError, "ColumnInfo GetFields Method", "DbHelper.DataHelper.DataColumnInfo", e.ToString(), AppDomain.CurrentDomain.BaseDirectory + "\\ErrorLog");
}
return StructureInfo;
}
Ουσιαστικά ήθελα να πάρω την Structure της κλάσης που θέλω έχοντας σε ένα array δύο διαστάσεων το όνομα του property και τα Attributes που έχω δηλώσει σ' αυτό ,ώστε να μπορέσω να κάνω map με τα πεδία που υπάρχουν στο table ενός dataset και να αποδώσω τις τιμές που μου επιστρέφονται από κάθε datarow στο αντίστοιχο Business object που έχω από την κλάση που θέλω .
Γιώργο στο σημείο του κώδικα που έγραψες FieldInfo[] objFields = obj.GetType().GetFields();
Επειδή το είχα δοκιμάσει αν δεν δήλωνα μέσα στην GetFields(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public) δεν μου επέστρεφε τις FieldInfo[]. Μήπως ξέρεις γιατί?
Πάντως και πάλι σ' ευχαριστώ για την άμεση απόκρισή σου.
Ιωάννης Μανουσάκης