Любые метаданные могут быть получены через класс 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)