/// <summary> /// Извлекает значение свойства указанного объекта через рефлексию. /// </summary> /// <param name="target">Объект, содержащий указанное свойство.</param> /// <param name="propName">Свойство, значение которого требуется извлечь.</param> /// <param name="targetType">Тип <see cref="target"/> (Данный параметр рекомендуется использовать, /// если <see cref="target"/> является прокси-объектом).</param> /// <returns>Извлечённое значение свойства.</returns> public object RetrievePropValue(object target, string propName, Type targetType = null) { Type tType = targetType ?? target.GetType(); PersistentClass mapping = _configuration.GetClassMapping(tType); return(mapping.IdentifierProperty.Name == propName ? mapping.IdentifierProperty.GetGetter(tType).Get(target) : mapping.GetProperty(propName).GetGetter(tType).Get(target)); }
public static Action <SpatialAuxiliaryDatabaseObject> GetSridMapperFor <TEntity>(this Configuration cfg, string propertyName, int srid) { PersistentClass targetClass = cfg.GetClassMapping(typeof(TEntity)); var prop = targetClass.GetProperty(propertyName); var column = (Column)prop.ColumnIterator.First(); if (((CustomType)column.Value.Type).UserType is IGeometryUserType) { return(x => x.SetSRID(targetClass.Table, column, srid)); } return(x => { }); }