Ich habe eine Methode, die Werte von Eigenschaften erhält oder Werte verschachtelter Eigenschaften, dieser Teil funktioniert gut, aber ich wollte Sammlung zu Zeichenfolge hinzufügen, falls eine Eigenschaft eine Sammlung ist und ich scheine haben ein Problem damit:Kann nicht zu Objektliste konvertieren
Code:
public static object GetNestedPropValue<TObject>(TObject obj, string propName)
{
string[] nestedObjectProp = propName.Split('.');
string[] childProperties = nestedObjectProp.Skip(1).ToArray();
string parentProp = nestedObjectProp.FirstOrDefault();
foreach (string property in childProperties)
{
if (obj == null)
{
return null;
}
PropertyInfo info = obj.GetType().GetProperty(parentProp);
if (info == null)
{
return null;
}
object nestedObject = info.GetValue(obj);
if(childProperties.Count() == 1)
{
Type checkNestedType = nestedObject.GetType();
if (IsICollection(checkNestedType) && IsIEnumerable(checkNestedType))
{
var nestedObjectValues = nestedObject as List<object>;
return string.Join(", ", nestedObjectValues
.Select(i => i.GetType().GetProperty(childProperties.FirstOrDefault()).GetValue(nestedObject))
.ToArray());
}
return nestedObject.GetType().GetProperty(childProperties.FirstOrDefault()).GetValue(nestedObject);
}
GetNestedPropValue(nestedObject, string.Join(".", childProperties.Skip(1)));
}
return null;
}
Problem ist hier:
var nestedObjectValues = nestedObject as List<object>;
return string.Join(", ", nestedObjectValues
.Select(i => i.GetType().GetProperty(childProperties.FirstOrDefault()).GetValue(nestedObject))
.ToArray());
Wenn ich versuche, zur Liste von Objekt zu geben sie es mir null gibt, was scheint t o das Problem sein?
Offensichtlich ist 'nestedObject' keine' List
versuch: var nestedObjectValues = nestedObject.ToList(); – jdweng
@jdweng: NestedObject wird explizit als 'object' eingegeben,' nestedObject.ToList() 'wird nicht kompiliert – Falanwe