I want to somehow map entity object to business object using reflection in c# -
public class Category
{
public int CategoryID { get; set; }
This is something that I wrote to do what I think you are trying to do and you don't have to cast your business objects:
public static TEntity ConvertObjectToEntity(object objectToConvert, TEntity entity) where TEntity : class
{
if (objectToConvert == null || entity == null)
{
return null;
}
Type BusinessObjectType = entity.GetType();
PropertyInfo[] BusinessPropList = BusinessObjectType.GetProperties();
Type EntityObjectType = objectToConvert.GetType();
PropertyInfo[] EntityPropList = EntityObjectType.GetProperties();
foreach (PropertyInfo businessPropInfo in BusinessPropList)
{
foreach (PropertyInfo entityPropInfo in EntityPropList)
{
if (entityPropInfo.Name == businessPropInfo.Name && !entityPropInfo.GetGetMethod().IsVirtual && !businessPropInfo.GetGetMethod().IsVirtual)
{
businessPropInfo.SetValue(entity, entityPropInfo.GetValue(objectToConvert, null), null);
break;
}
}
}
return entity;
}
Usage example:
public static Category GetCategory(int id)
{
return ConvertObjectToEntity(Database.GetCategoryEntity(id), new Category());
}