のリストに変換し、この部分は正常に動作しているが、いくつかのプロパティがコレクションであると私はように見える場合には、私は文字列にコレクションを追加したいですそれに問題がある:カントは、私はプロパティの値を取得またはネストされたプロパティの値を取得しますmethongを持っていますオブジェクト
コード:
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;
}
問題はここにある:私はオブジェクトのリストに入力しようとすると
var nestedObjectValues = nestedObject as List<object>;
return string.Join(", ", nestedObjectValues
.Select(i => i.GetType().GetProperty(childProperties.FirstOrDefault()).GetValue(nestedObject))
.ToArray());
それは私にはnullを与え、T思えますo問題がある?
明らか 'nestedObject'は'リスト
try:var nestedObjectValues = nestedObject.ToList(); – jdweng
@jdweng:nestedObjectが明示的にobject'、 'nestedObject.ToListは()' – Falanwe