Я просто хочу получить основной идентификатор для всех доменных объектов из общего свойства.
Код до сих пор:
IEnumerable<PropertyInfo> customProperties = genericObject.GetType().GetProperties(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
foreach (PropertyInfo justAuditElementProperties in customProperties) {
IEnumerable<PropertyInfo> elementsToAudit = justAuditElementProperties.PropertyType.GetProperties().Where(p => Attribute.IsDefined(p, typeof (AuditeAttribute)));
foreach (PropertyInfo element in elementsToAudit) {
string name = justAuditElementProperties.PropertyType.FullName + "." + element.Name;
string value = element.GetValue( ? , null).ToString();
atributoNomeValor.Add(name, value);
}
}
Какая правильная замена на ?
- Так что важно сказать, что каждый основной идентификатор имеет атрибут [Audite]
edit
Тип?является типом свойства genericObject.пример:
Отдел является genericObject.
Менеджер является свойством.Поэтому в этом случае я хочу element.GetValue( ? , null).ToString();
, где этот элемент объявлен в классе Manager как:
[Audite]
public string name { get; set; }
Решение
Это использует решение из @ liho1eye, я только что добавилпроверка нулевой ссылки, которая вызывает у меня некоторые проблемы.
var propertyParent = justAuditElementProperties.GetValue(genericObject, null);
string value = propertyParent != null ? element.GetValue(propertyParent, null).ToString() : "";