private IReadOnlyList <CustomTypeAttributeValue> BuildAttributeCollection() { var attributeSource = GetType().GetFields(BindingFlags.Instance | BindingFlags.Public) .Select(f => new { Field = f, Attribute = f.GetCustomAttribute <OracleObjectMappingAttribute>() }) .Where(fa => fa.Attribute != null) .Select((fa, i) => new CustomTypeAttributeValue { ColumnHeader = new ColumnHeader { ColumnIndex = i, Name = fa.Attribute.AttributeName }, Value = CustomTypeValueConverter.ConvertItem(fa.Field.GetValue(this), OracleLargeTextValue.DefaultPreviewLength) }) .ToList() .AsReadOnly(); return(_attributes = attributeSource); }
private ColumnHeader BuildColumnHeader() { _columnHeader = new ColumnHeader { DataType = ArrayItemType, DatabaseDataType = CustomTypeValueConverter.ConvertDatabaseTypeNameToReaderTypeName(ElementTypeName), Name = "COLUMN_VALUE", }; return(_columnHeader); }
private string BuildPreview() { if (IsNull) { return(String.Empty); } var items = Array.Take(PreviewMaxItemCount).Select(i => ToPrintable(CustomTypeValueConverter.ConvertItem(i, LargeValuePreviewLength))); if (!String.IsNullOrEmpty(_enclosingCharacter)) { items = items.Select(i => String.Format("{0}{1}{0}", _enclosingCharacter, i)); } return($"{DataTypeName}({String.Join(", ", items)}{(Array.Length > PreviewMaxItemCount ? $", {CellValueConverter.Ellipsis} ({Array.Length} items)" : String.Empty)})"); }