Exemplo n.º 1
0
        /// <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;
        }
Exemplo n.º 2
0
        /// <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 ) );
            }
        }