/// <summary> /// Возвращает значение объекта. /// </summary> /// <param name="obj">Объект.</param> /// <param name="propertyName">Имя свойства, отвечающего за значение объекта.</param> public static string GetLogObjectValue( BasePlainObject obj, string propertyName ) { Type type = obj.GetType(); PropertyInfo prop = type.GetProperty( propertyName ); if(prop == null) { throw new CoreInvalidOperationException(Resources.ResourceManager.GetString("TypeException", type.FullName, propertyName)); } object value = prop.GetValue( obj, null ); return value != null ? value.ToString() : String.Empty; }
/// <summary> /// Заносит в лог информацию о добавлении объекта. /// Класс должен быть помечен атрибутом LogObjectAttribute. /// </summary> /// <param name="obj"></param> public static void InfoInsertObject( BasePlainObject obj ) { Type type = obj.GetType(); LogObjectAttribute logAttr = GetLogObjectAttribute( type ); if(logAttr == null) { // если атрибута нет, значит объект не предназначен для протоколирования return; } string value = GetLogObjectValue( obj, logAttr.PropertyName ); if(User.Current != null) { Log.Info( String.Format( @"Пользователь '{0}' добавил объект {1} ({2}).", User.Current.Login, logAttr.Name, value ) ); } else { Log.Info( String.Format( @"Добавлен объект {0} ({1}).", logAttr.Name, value ) ); } }