/// <summary> /// Осуществляет получение файлового свойства объекта данных. /// </summary> /// <remarks> /// При необходимости будет произведена дочитка объекта данных. /// </remarks> /// <param name="dataObject"> /// Объект данных, содержащий файловое свойство. /// </param> /// <param name="dataObjectFilePropertyName"> /// Имя файлового свойства в объекте данных. /// </param> /// <returns> /// Значение файлового свойства объекта данных. /// </returns> public virtual object GetFileProperty(DataObject dataObject, string dataObjectFilePropertyName) { if (dataObject == null) { throw new ArgumentNullException(nameof(dataObject)); } Type dataObjectType = dataObject.GetType(); Type dataObjectFilePropertyType = Information.GetPropertyType(dataObjectType, dataObjectFilePropertyName); if (dataObjectFilePropertyType != FilePropertyType) { throw new Exception(string.Format( "Wrong type of {0}.{1} property. Actual is {2}, but {3} is expected.", nameof(dataObject), dataObjectFilePropertyName, dataObjectFilePropertyType.FullName, FilePropertyType.FullName)); } // Выполняем дочитку объекта данных, если в переданном объекте на загружено искомое файловое свойство. DataObject srcDataObject = dataObject; if (!dataObject.CheckLoadedProperty(dataObjectFilePropertyName)) { var view = new View { DefineClassType = dataObjectType, Name = "FilePropertyView" }; view.AddProperty(dataObjectFilePropertyName); srcDataObject = (DataObject)Activator.CreateInstance(dataObjectType); srcDataObject.SetExistObjectPrimaryKey(dataObject.__PrimaryKey); _dataService.LoadObject(view, srcDataObject); } return(Information.GetPropValueByName(srcDataObject, dataObjectFilePropertyName)); }