我需要獲得名稱和值每個對象的所有屬性值。其中有些是引用類型,所以如果我得到以下對象:在嵌套屬性中使用GetValue()引發的TargetException
public class Artist {
public int Id { get; set; }
public string Name { get; set; }
}
public class Album {
public string AlbumId { get; set; }
public string Name { get; set; }
public Artist AlbumArtist { get; set; }
}
當從Album
對象獲取的屬性我也需要獲取屬性AlbumArtist.Id
和AlbumArtist.Name
其中嵌套的值。
到目前爲止我有以下代碼,但它試圖獲取嵌套的值時觸發System.Reflection.TargetException。
var valueNames = new Dictionary<string, string>();
foreach (var property in row.GetType().GetProperties())
{
if (property.PropertyType.Namespace.Contains("ARS.Box"))
{
foreach (var subProperty in property.PropertyType.GetProperties())
{
if(subProperty.GetValue(property, null) != null)
valueNames.Add(subProperty.Name, subProperty.GetValue(property, null).ToString());
}
}
else
{
var value = property.GetValue(row, null);
valueNames.Add(property.Name, value == null ? "" : value.ToString());
}
}
所以在If
聲明我只是檢查,如果財產是我的引用類型的命名空間下,如果是我應該得到的所有嵌套的屬性值,而這其中的異常。
在此先感謝您的幫助..
爲什麼你需要思考,如果你有'Album'對象? –
那麼我應該收到很多不同的對象,我只能在運行時才知道。 –
對這種方法使用字典(屬性名稱和值的平面列表)會失敗,它有兩個類具有相同的屬性,如「名稱」 –