У меня есть класс, в котором есть следующие свойства.
Public class Classifields
{
public int ID {get;set;}
public Name {get; set;}
public Type {get; set;}
}
Вышеуказанный объект используется в качестве дочернего объекта в родительском объекте. Таким образом, родительский объект будет содержать Id этого Classifields.
Для некоторых целей я беру все свойства родительского класса с загруженными в него связанными объектами, что означает, что родительский и дочерний объекты также загружаются.
Я принимаю свойства таким образом, как показано ниже.
PropertyInfo[] allProps = typeof(T).GetProperties();
return allProps;
Таким образом, возвращаемые свойства будут иметь некоторое время одиночные Классификационные поля или несколько раз несколько классификационных полей.
Я принимаю значение как показано ниже
var newValue = prop.GetValue(model, null);
Для свойства списка Classifields я проверяю, полное ли свойство содержит «Classifields» или нет, и передаю список классификационных полей или отдельных Classfields в качестве динамического c объекта для обработки и получения имени со значением, разделенным запятыми, из списка или отдельного элемента.
Когда это множественная запись, я пытаюсь использовать IList объекта для типизации динамического c, он работает правильно, но когда он приходит как один объект, он терпит неудачу, потому что это это не IList.
В то же время я пытался с foreach Classifields, но это также не работает.
if(val.FullName.Contains("Classifields"))
{
old = (oldV != null) ? GetNames(oldV) : null;
new = (newV != null) ? GetNames(newV) : null;
}
public string GetNames(dynamic stringDatatoProcess)
{
if (stringDatatoProcess== null)
return "";
try
{
string Names = "";
if (stringDatatoProcess!= null)
{
dynamic dynamicDog = stringDatatoProcess;
string values = string.Empty;
//IList<Classifields> classfields = dynamicDog;
StringBuilder stringvalues = new StringBuilder();
foreach(Classification classification in dynamicDog)
{
stringvalues.Append(classification.ClsName);
stringvalues.Append(",");
}
ClsNames = stringvalues.ToString().TrimEnd(',');
}
return ClsNames;
}
catch (Exception ex)
{
throw ex;
}
}
Как справиться с этой ситуацией, потому что я также не могу проверить счетчик, поскольку это динамический c объект. И я не могу сосчитать предметы, потому что он выдает исключение во время самовоспроизведения.