Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Data / System / Data / ProviderBase / DataReaderContainer.cs / 1 / DataReaderContainer.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Data.ProviderBase { using System; using System.Data; using System.Data.Common; using System.Diagnostics; internal abstract class DataReaderContainer { protected readonly IDataReader _dataReader; protected int _fieldCount; static internal DataReaderContainer Create(IDataReader dataReader, bool returnProviderSpecificTypes) { if (returnProviderSpecificTypes) { DbDataReader providerSpecificDataReader = (dataReader as DbDataReader); if (null != providerSpecificDataReader) { return new ProviderSpecificDataReader(dataReader, providerSpecificDataReader); } } return new CommonLanguageSubsetDataReader(dataReader); } protected DataReaderContainer(IDataReader dataReader) { Debug.Assert(null != dataReader, "null dataReader"); _dataReader = dataReader; } internal int FieldCount { get { return _fieldCount; } } internal abstract bool ReturnProviderSpecificTypes { get; } protected abstract int VisibleFieldCount { get; } internal abstract Type GetFieldType(int ordinal); internal abstract object GetValue(int ordinal); internal abstract int GetValues(object[] values); internal string GetName(int ordinal) { string fieldName = _dataReader.GetName(ordinal); Debug.Assert(null != fieldName, "null GetName"); return ((null != fieldName) ? fieldName : ""); } internal DataTable GetSchemaTable() { return _dataReader.GetSchemaTable(); } internal bool NextResult() { _fieldCount = 0; if (_dataReader.NextResult()) { _fieldCount = VisibleFieldCount; return true; } return false; } internal bool Read() { return _dataReader.Read(); } private sealed class ProviderSpecificDataReader : DataReaderContainer { private DbDataReader _providerSpecificDataReader; internal ProviderSpecificDataReader(IDataReader dataReader, DbDataReader dbDataReader) : base(dataReader) { Debug.Assert(null != dataReader, "null dbDataReader"); _providerSpecificDataReader = dbDataReader; _fieldCount = VisibleFieldCount; } internal override bool ReturnProviderSpecificTypes { get { return true; } } protected override int VisibleFieldCount { get { int fieldCount = _providerSpecificDataReader.VisibleFieldCount; Debug.Assert(0 <= fieldCount, "negative FieldCount"); return ((0 <= fieldCount) ? fieldCount : 0); } } internal override Type GetFieldType(int ordinal) { Type fieldType = _providerSpecificDataReader.GetProviderSpecificFieldType(ordinal); Debug.Assert(null != fieldType, "null FieldType"); return fieldType; } internal override object GetValue(int ordinal) { return _providerSpecificDataReader.GetProviderSpecificValue(ordinal); } internal override int GetValues(object[] values) { return _providerSpecificDataReader.GetProviderSpecificValues(values); } } private sealed class CommonLanguageSubsetDataReader : DataReaderContainer { internal CommonLanguageSubsetDataReader(IDataReader dataReader ) : base(dataReader) { _fieldCount = VisibleFieldCount; } internal override bool ReturnProviderSpecificTypes { get { return false; } } protected override int VisibleFieldCount { get { int fieldCount = _dataReader.FieldCount; Debug.Assert(0 <= fieldCount, "negative FieldCount"); return ((0 <= fieldCount) ? fieldCount : 0); } } internal override Type GetFieldType(int ordinal) { return _dataReader.GetFieldType(ordinal); } internal override object GetValue(int ordinal) { return _dataReader.GetValue(ordinal); } internal override int GetValues(object[] values) { return _dataReader.GetValues(values); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RecordManager.cs
- HtmlTableCell.cs
- MultiBinding.cs
- uribuilder.cs
- DiagnosticTrace.cs
- Base64WriteStateInfo.cs
- ResolveMatchesApril2005.cs
- ContentPlaceHolder.cs
- WebServiceErrorEvent.cs
- Point3DAnimation.cs
- XmlAttributeAttribute.cs
- ConfigurationErrorsException.cs
- DefaultDiscoveryServiceExtension.cs
- TreeViewItemAutomationPeer.cs
- StaticResourceExtension.cs
- SqlResolver.cs
- WorkflowWebService.cs
- MappingItemCollection.cs
- PasswordBoxAutomationPeer.cs
- IsolatedStorageFileStream.cs
- StringValueSerializer.cs
- CultureTableRecord.cs
- BooleanSwitch.cs
- CommandHelpers.cs
- BackgroundWorker.cs
- RouteValueExpressionBuilder.cs
- Single.cs
- CalendarButton.cs
- LinqDataSourceInsertEventArgs.cs
- EmptyStringExpandableObjectConverter.cs
- LockedAssemblyCache.cs
- Select.cs
- FormViewModeEventArgs.cs
- SQLDateTimeStorage.cs
- AssociationTypeEmitter.cs
- ScopelessEnumAttribute.cs
- SecurityCriticalDataForSet.cs
- DispatcherExceptionFilterEventArgs.cs
- Literal.cs
- CompensationHandlingFilter.cs
- FlowDecisionDesigner.xaml.cs
- DataGridTable.cs
- CompositeControl.cs
- ServiceModelActivity.cs
- UInt16Converter.cs
- NullRuntimeConfig.cs
- ToolStripMenuItem.cs
- HyperLinkField.cs
- SortQuery.cs
- ContextMenu.cs
- ListViewCancelEventArgs.cs
- AutomationEventArgs.cs
- EditorPartDesigner.cs
- COM2PropertyDescriptor.cs
- SecureEnvironment.cs
- HttpRequest.cs
- UmAlQuraCalendar.cs
- Compilation.cs
- RestHandler.cs
- TypeListConverter.cs
- UIElement.cs
- HttpClientCredentialType.cs
- TimerEventSubscriptionCollection.cs
- ListViewUpdateEventArgs.cs
- GeometryCombineModeValidation.cs
- CorrelationResolver.cs
- ServiceObjectContainer.cs
- ToolStripLocationCancelEventArgs.cs
- PropertyState.cs
- RegexRunnerFactory.cs
- DataGridColumnCollectionEditor.cs
- ClientConfigurationSystem.cs
- SqlCommandSet.cs
- XmlSchemaSet.cs
- ChannelHandler.cs
- QueueSurrogate.cs
- X509Certificate.cs
- Scheduler.cs
- HostedBindingBehavior.cs
- WebPartConnectionsCancelEventArgs.cs
- DesignerCatalogPartChrome.cs
- KeyInterop.cs
- VirtualPathData.cs
- Shared.cs
- PerspectiveCamera.cs
- SynchronizedInputAdaptor.cs
- GZipDecoder.cs
- ImmutableDispatchRuntime.cs
- CollectionViewSource.cs
- LayoutEngine.cs
- ThicknessConverter.cs
- ErrorWrapper.cs
- AssociationSet.cs
- HotCommands.cs
- SeverityFilter.cs
- TextBox.cs
- Vector3D.cs
- keycontainerpermission.cs
- ProfileService.cs
- SecurityKeyEntropyMode.cs