Методы класса Information

Любые метаданные могут быть получены через класс Information с набором статических методов.

Ниже приведены наиболее часто используемые методы класса Information, сгруппированные по назначению.

Работа со свойствами объекта (определение значения, загруженности и пр., задание значения)

GetPropValueByName

Назначение: Получить значение свойства объекта данных по имени этого свойства

Параметры:

  • obj - Объект данных, значение свойства которого требуется получить
  • propName - Имя свойства объекта данных, значение которого требуется получить

Сигнатура:

static public object GetPropValueByName(DataObject obj, string propName) 

SetPropValueByName

Назначение: Установить значение свойства объекта данных по имени этого свойства, значение передаётся строкой. При установке свойства выполняется попытка преобразовать строковое значение в значение соответствующего типа путём вызова статического метода Parse(string) у этого типа.

Параметры:

  • obj - Объект данных, значение свойства которого устанавливается данным методом
  • propName - Имя свойства объекта данных, значение которого устанавливается данным методом
  • PropValue - Значение свойства объекта данных, которое будет установлено данным методом

Сигнатура:

static public void SetPropValueByName(DataObject obj, string propName, string PropValue) 

SetPropValueByName

Назначение: Установить значение свойства объекта данных по имени этого свойства, значение передаётся типизированно. Если попытка преобразования типа неудачна, возвращается сообщение об ошибке.

Сигнатура:

static public void SetPropValueByName(DataObject obj, string propName, object PropValue) 

TrimmedStringStorage

Назначение: Обрезать ли строки для данного свойства.

Параметры:

  • tp - тип объекта данных
  • propName - Имя свойства объекта данных

Сигнатура:

static public bool TrimmedStringStorage(System.Type tp, string propname) 

IsStoredProperty

Назначение: Хранимое ли свойство

Параметры:

  • type - .Net-тип класса объекта данных
  • propName - имя свойства

Сигнатура:

static public bool IsStoredProperty(Type type, string propName) 

GetPropertyNotNull

Назначение: Проверить, установлен ли для указанного .Net-свойства атрибут NotNullAttribute

Параметры:

  • type - .Net-тип класса объекта данных
  • property - имя свойства

Возвращаемый результат: true, если установлен, иначе false

Сигнатура:

static public bool GetPropertyNotNull(System.Type type, string property) 

GetPropertyStrLen

Назначение: Получить для указанного .Net-свойства атрибут StrLenAttribute.

Параметры:

  • type - .Net-тип класса объекта данных
  • property - имя свойства

Возвращаемый результат: Значение установленного атрибута (-1 если не установлено)

Сигнатура:

static public int GetPropertyStrLen(System.Type type, string property) 

GetPropertyType

Назначение: Получить .Net-тип свойства класса объекта данных по имени этого свойства

Параметры:

  • declarationType - .Net-тип класса объекта данных
  • propname - имя свойства

Сигнатура:

static public Type GetPropertyType(System.Type declarationType, string propname) 

CheckPropertyExist

Назначение: Проверить есть ли такое свойство в указанном типе

Параметры:

  • type - .Net-тип класса объекта данных
  • propName - Имя свойства

Возвращаемый результат:

  • true - свойство есть,
  • false - нет

Сигнатура:

static public bool CheckPropertyExist(System.Type type, string propName)

ExtractPropertyName

Назначение: Извлечение свойства внутри текущего класса

Параметры:

  • propertyExpression - Лямбда - выражение для доступа к свойству
  • TSource - Тип класса - источника

Возвращаемый результат: Имя свойства (одиночное!)

Сигнатура:

public static string ExtractPropertyName<TSource>(Expression<Func<TSource>> propertyExpression)

См. Доступ к собственным атрибутам объекта и атрибутам связанных объектов.

ExtractPropertyName

Назначение: Explicit извлечение свойства по типу

Параметры:

  • propertyExpression - Лямбда - выражение для доступа к свойству
  • TSource - Тип класса - источника

Возвращаемый результат: Имя свойства (одиночное!)

Сигнатура:

public static string ExtractPropertyName<TSource>(Expression<Func<TSource, object>> propertyExpression)

ExtractPropertyPath

Назначение: Рекурсивный метод получения пути для свойства, заданного через вложенную лямбду.Лямбда-выражение может содержать вложенные обращения к мастерам.

Параметры:

  • TProperty - Тип свойства
  • propertyExpression - Лямбда - выражение для доступа к свойству

Возвращаемый результат: Полный путь к свойству (разделение через точку)

Сигнатура:

public static string ExtractPropertyPath<TProperty>(Expression<Func<TProperty>> propertyExpression)

ExtractPropertyPath

Назначение: Рекурсивный метод получения пути для свойства, заданного через вложенную лямбду.Лямбда-выражение может содержать вложенные обращения к мастерам.

Параметры:

  • propertyExpression - Лямбда - выражение для доступа к свойству
  • TSource - Тип класса - источника

Возвращаемый результат: Полный путь к свойству (разделение через точку)

Сигнатура:

public static string ExtractPropertyPath<TSource>(Expression<Func<TSource, object>> propertyExpression)

ExtractPropertyInfo

Назначение: Explicit извлечение свойства по типу

Параметры:

  • propertyExpression - Лямбда - выражение для доступа к свойству
  • TSource - Тип класса - источника

Возвращаемый результат: PropertyInfo свойства (самого последнего)

Сигнатура:

public static PropertyInfo ExtractPropertyInfo<TSource>(Expression<Func<TSource, object>> propertyExpression) 

Работа с представлениями

GetView

Назначение: Получить представление по его имени и классу объекта данных

Сигнатура:

static public View GetView(string ViewName, System.Type type) 

GetCompatibleView

Назначение: Получить представление, “совместимое” с переданными классами. Ищет общего предка, затем пытается взять у него указанное представление. Если представление не найдено, возвращается null.

Параметры:

  • ViewName - имя представления
  • types - одномерный массив типов классов данных

Сигнатура:

static public View GetCompatibleView(string ViewName, System.Type[] types) 

AllViews

Назначение: Получить список имён представлений для указанного класса объекта данных

Параметры:

type - класс объекта данных

Возвращаемое значение: Массив строк, содержащих имена представлений для указанного типа

Сигнатура:

static public string[] AllViews(System.Type type) 

AllViews

Назначение: Получить список имён общих представлений для указанных классов. Речь идёт о ситуации, когда образующие иерархию наследования классы имеют представления, что означает, что имеется множество представлений, общее для некоторого множества классов. Указывая в этот метод это множество классов, Вы и получите имена их общих представлений.

Сигнатура:

static public string[] AllViews(params System.Type[] types) 

CheckViewForClasses

Назначение: Проверить, доступно ли указанное по имени представление во всех перечисленных классах. Речь идёт о ситуации, когда образующие иерархию наследования классы имеют представления, что означает, что имеется множество представлений, общее для некоторого множества классов.

Сигнатура:

static public bool CheckViewForClasses(string ViewName, params System.Type[] types) 

GetAllTypesFromView

Назначение: Вернуть список всех встречающихся в представлении типов, включая детейлы.

Параметры:

view - Представление

Возвращаемое значение: Список типов без дублей

Сигнатура:

public static List<Type> GetAllTypesFromView(View view) 

GetAllTypesFromView

Назначение: Вернуть список всех встречающихся в представлении типов, включая детейлы и псевдодетейлы.

Параметры:

view - Расширенное представление (с псевдодетейлами).

Возвращаемое значение: Список типов без дублей

Сигнатура:

public static List<Type> GetAllTypesFromView(ExtendedView view) 

Работа с объектами данных

GetAlteredPropertyNames

Назначение: Сравнить два объекта данных и вернуть список различающихся .Net-свойств. (Объект или свойство с атрибутом NotStoredпроверяться не будет)

Параметры:

  • obj1 - 1-й объект данных
  • obj2 - 2-й объект данных
  • WithDetailsComparing - со сравниванием детейловах объектов

Возвращаемое значение: одномерный строковый массив имён свойств

Сигнатура:

static public string[] GetAlteredPropertyNames(DataObject obj1, DataObject obj2, bool WithDetailsComparing) 

GetAlteredProperyNames

Назначение: Используйте метод GetAlteredPropertyNames. Оставлен для совместимости(ошибка в имени метода).

GetAlteredPropertyNamesWithNotStored

Назначение: Сравнить два объекта данных и вернуть список различающихся .Net-свойств. (NotStored-атрибуты не игнорируются и тоже проверяются вместе с остальными)

Параметры:

  • obj1 - 1-й объект данных
  • obj2 - 2-й объект данных
  • WithDetailsComparing - со сравниванием детейловах объектов

Возвращаемое значение: одномерный строковый массив имён свойств

Сигнатура:

static public string[] GetAlteredPropertyNamesWithNotStored(DataObject obj1, DataObject obj2, bool WithDetailsComparing) 

ContainsAlteredProps

Назначение: Сравнить два объекта данных и вернуть true - если объекты различаются

Сигнатура:

 static public bool ContainsAlteredProps(DataObject obj1, DataObject obj2, bool WithDetailsComparing) 

CheckNotNullAttributes

Назначение: Проверить, нет ли непустых значений в NotNull .Net-свойствах.

Параметры:

dataObject - объект данных

Возвращаемое значение: возвращает null, если непустых значений нет, иначе одномерный строковый массив с именами свойств, где значения есть

Сигнатура:

static public string[] CheckNotNullAttributes(DataObject dataObject) 

GetAllPropertyNames

Назначение: Вернуть все имена .Net-свойств для .Net-типа класса объекта данных

Параметры:

type - .Net-тип класса объекта данных

Возвращаемое значение: одномерный строковый массив имён свойств

Сигнатура:

static public string[] GetAllPropertyNames(System.Type type) 

Информация о генераторе первичных ключей

GetKeyGeneratorType

Назначение: Получить тип генератора ключей

Параметры:

typeofdataobject - для какого типа

Сигнатура:

static public System.Type GetKeyGeneratorType(System.Type typeofdataobject) 

Имена хранения объектов

GetTypeStorageName

Назначение: Имя хранилища для типа

Сигнатура:

 static public string GetTypeStorageName(System.Type type) 

GetClassStorageName

Назначение: Получить имя хранения для .Net-типа класса объекта данных, заданное атрибутом ClassStorageAttribute.

Параметры:

type - .Net-тип класса объекта данных

Возвращаемое значение: имя хранения в строке

Сигнатура:

static public string GetClassStorageName(System.Type type) 

GetPrimaryKeyStorageName

Назначение: Получить имя хранения первичного ключа, установленное атрибутом PrimaryKeyStorageAttribute

Параметры: type - .Net-тип класса объекта данных

Сигнатура:

static public string GetPrimaryKeyStorageName(System.Type type) 

GetPropertyStorageName

Назначение: Получить имя хранения .Net-свойства, установленное атрибутом PropertyStorageAttribute.

Сигнатура:

static public string GetPropertyStorageName(System.Type type, string property, int index) 

Более подробное описание данного метода можно найти в статье Information.GetPropertyStorageName.

Проверка прав на атрибуты объекта

CheckAccessToAttribute

Назначение: Проверка прав на атрибуты объекта. Метод является оберткой для метода CheckAccessToAttribute класса ICSSoft.STORMNET.RightManager и используется для проверки прав в Get’ерах вычислимых свойств DataObject. Обработка мастеров не проиводится.

Параметры:

  • type - .Net-тип класса объекта данных
  • propertyName - Имя свойства объекта данных, на которое проверяются права.
  • deniedAccessValue - Значение атрибута при отсутствии прав.

Сигнатура:

public static bool CheckAccessToAttribute(Type type, string propertyName, out object deniedAccessValue) 

Работа с изображениями

GetImageForInstance

Назначение: Вернуть картинку для объекта

Сигнатура:

public static System.Drawing.Image GetImageForInstance(DataObject dobject) 

GetClassImage

Назначение: Вернуть картинку для класса, установленную атрибутом ClassImageFileAttribute.

Параметры:

dataObjectType - Объект данных этого класса

Возвращаемое значение: Картинка

Сигнатура:

public static System.Drawing.Image GetClassImage(System.Type dataObjectType) 

GetClassImageProperty

Назначение: Вернуть свойство-картинку, установленное атрибутом ClassImagePropertyAttribute

Сигнатура:

public static string GetClassImageProperty(System.Type dataobjectType)