Я определяю класс BaseController с помощью Generi c Class TEntity.
public class BaseController<TEntity> : Controller
Использование:
public class ProductController : BaseController<Product>
{
public ProductController(BaseService<Product> baseService)
: base(baseService)
{
}
}
Класс Продукт имеет отношение дочерних свойств. Это динамично c следовать TEntity (класс Product)
public partial class Product
{
[Key]
public long CodeId { get; set; }
public int Name { get; set; }
//Config Ref
[NotMapped]
public ICollection<ProductDetail> ProductDetails { get; set; }
}
public partial class ProductDetail
{
[Key]
public long CodeId { get; set; }
public int Name { get; set; }
}
TEntity теперь является Product. И я получаю свойство ProductDetails.
var tEn = JsonUtilities.ConvertObjectToObject<TEntity>(obj);
var propsInfo = (typeof(TEntity)).GetProperties();
var propsCollection = propsInfo.Where(x => x.PropertyType.IsGenericType
&& x.PropertyType.GetGenericTypeDefinition() == typeof(ICollection<>));
foreach (var prop in propsCollection)
{
dynamic childItems = prop.GetValue(tEn);
var genericType = prop.PropertyType.GenericTypeArguments[0];
var tableProp = context.GetType().GetProperties().FirstOrDefault(x => x.Name == genericType.Name);
foreach (dynamic itemChild in childItems)
{
// Convert here for setting some property value
var dy = JsonUtilities.ConvertObjectToObject<dynamic>(itemChild);
foreach (KeyValuePair<string, string> itemKey in dic)
{
itemChild[itemKey.Value.Trim()] = "DATA" ; << dynamic property
}
// QUESTION HERE
var itemChild2 = JsonUtilities.ConvertObjectToObject<ABC???>(dy); <<<<<
}
}
Теперь, как я могу снова преобразовать generi c itemChild с объектом класса ProductDetail
var dy = JsonUtilities.ConvertObjectToObject<ProductDetail>(itemChild); <<< I can not put ProductDetail here because, It's child of generic object Product.
У меня TEntity - Product, а в Product - ProductDetails - CHILD. (Я использовал название Product & ProductDetail для вашего удобства.)
Теперь, у меня TEntity - Продукт. Я могу получить Child Instant of Class ProductDetail. возможно, вызовите 'childClass'. После этого я конвертирую 'childClass' в динамический c объект. Мой вопрос: как снова преобразовать в 'childClass' из динамического c Object.