Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntityDesign / Design / System / Data / EntityModel / LazyTextWriterCreator.cs / 1305376 / LazyTextWriterCreator.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Diagnostics; using System.Runtime.Versioning; namespace System.Data.Entity.Design { ////// This class is responsible for abstracting the knowledge /// of whether the user provided a TextWriter or a FilePath. /// /// If the user gave us a filePath we try not to create the TextWriter /// till we absolutely need it in order to prevent the file from being created /// in error cases. /// internal class LazyTextWriterCreator : IDisposable { private bool _ownTextWriter; private TextWriter _writer = null; private string _targetFilePath = null; internal LazyTextWriterCreator(TextWriter writer) { Debug.Assert(writer != null, "writer parameter is null"); _ownTextWriter = false; _writer = writer; } [ResourceExposure(ResourceScope.Machine)] //The target file path is used to open a stream which is a machine resource. internal LazyTextWriterCreator(string targetFilePath) { Debug.Assert(targetFilePath != null, "targetFilePath parameter is null"); _ownTextWriter = true; _targetFilePath = targetFilePath; } [ResourceExposure(ResourceScope.None)] //The resource( target file path) is not exposed to the callers of this method [ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)] //For StreamWriter constructor and we pick //the target file path from class variable. internal TextWriter GetOrCreateTextWriter() { if (_writer == null) { // lazy creating the writer _writer = new StreamWriter(_targetFilePath); } return _writer; } internal string TargetFilePath { get { return _targetFilePath; } } internal bool IsUserSuppliedTextWriter { get { return !_ownTextWriter; } } public void Dispose() { // Technically, calling GC.SuppressFinalize is not required because the class does not // have a finalizer, but it does no harm, protects against the case where a finalizer is added // in the future, and prevents an FxCop warning. GC.SuppressFinalize(this); if (_ownTextWriter && _writer != null) { _writer.Dispose(); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Diagnostics; using System.Runtime.Versioning; namespace System.Data.Entity.Design { ////// This class is responsible for abstracting the knowledge /// of whether the user provided a TextWriter or a FilePath. /// /// If the user gave us a filePath we try not to create the TextWriter /// till we absolutely need it in order to prevent the file from being created /// in error cases. /// internal class LazyTextWriterCreator : IDisposable { private bool _ownTextWriter; private TextWriter _writer = null; private string _targetFilePath = null; internal LazyTextWriterCreator(TextWriter writer) { Debug.Assert(writer != null, "writer parameter is null"); _ownTextWriter = false; _writer = writer; } [ResourceExposure(ResourceScope.Machine)] //The target file path is used to open a stream which is a machine resource. internal LazyTextWriterCreator(string targetFilePath) { Debug.Assert(targetFilePath != null, "targetFilePath parameter is null"); _ownTextWriter = true; _targetFilePath = targetFilePath; } [ResourceExposure(ResourceScope.None)] //The resource( target file path) is not exposed to the callers of this method [ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)] //For StreamWriter constructor and we pick //the target file path from class variable. internal TextWriter GetOrCreateTextWriter() { if (_writer == null) { // lazy creating the writer _writer = new StreamWriter(_targetFilePath); } return _writer; } internal string TargetFilePath { get { return _targetFilePath; } } internal bool IsUserSuppliedTextWriter { get { return !_ownTextWriter; } } public void Dispose() { // Technically, calling GC.SuppressFinalize is not required because the class does not // have a finalizer, but it does no harm, protects against the case where a finalizer is added // in the future, and prevents an FxCop warning. GC.SuppressFinalize(this); if (_ownTextWriter && _writer != null) { _writer.Dispose(); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SqlNodeTypeOperators.cs
- ReadOnlyAttribute.cs
- SqlInternalConnectionTds.cs
- RegistryKey.cs
- Rfc2898DeriveBytes.cs
- KeyPullup.cs
- DataMisalignedException.cs
- LambdaCompiler.ControlFlow.cs
- ObjectRef.cs
- DataServiceClientException.cs
- MenuItemStyleCollection.cs
- NavigationCommands.cs
- ObjectDataSourceView.cs
- OdbcConnection.cs
- CleanUpVirtualizedItemEventArgs.cs
- _SecureChannel.cs
- DbMetaDataColumnNames.cs
- EnumerableRowCollectionExtensions.cs
- ParagraphVisual.cs
- SafeRightsManagementEnvironmentHandle.cs
- ArrayExtension.cs
- NullableDecimalMinMaxAggregationOperator.cs
- FixedMaxHeap.cs
- ExtendedPropertyDescriptor.cs
- CircleHotSpot.cs
- BitmapData.cs
- PropVariant.cs
- CheckBoxFlatAdapter.cs
- GenericParameterDataContract.cs
- StringExpressionSet.cs
- ProgressBarRenderer.cs
- DBPropSet.cs
- HandleTable.cs
- ContentOperations.cs
- RowToParametersTransformer.cs
- DataGridViewRowsRemovedEventArgs.cs
- PagerSettings.cs
- GeneralTransform3D.cs
- TableHeaderCell.cs
- ArrangedElementCollection.cs
- XmlCharCheckingReader.cs
- MachineSettingsSection.cs
- WindowsSlider.cs
- XmlBoundElement.cs
- MemoryMappedViewAccessor.cs
- Compiler.cs
- QuerySubExprEliminator.cs
- StylusPointPropertyUnit.cs
- BindingsCollection.cs
- Control.cs
- SectionXmlInfo.cs
- XdrBuilder.cs
- ToolstripProfessionalRenderer.cs
- FactoryGenerator.cs
- OleDbConnectionFactory.cs
- FastPropertyAccessor.cs
- CombinedGeometry.cs
- followingsibling.cs
- SHA1Managed.cs
- BitmapEffectInput.cs
- TextElementEnumerator.cs
- SchemaNames.cs
- WeakKeyDictionary.cs
- Missing.cs
- PropertyGridView.cs
- InstanceLockQueryResult.cs
- Pair.cs
- DrawingAttributes.cs
- MetadataFile.cs
- ConfigurationConverterBase.cs
- ECDsa.cs
- MobileCapabilities.cs
- ManagedCodeMarkers.cs
- BitmapData.cs
- AnnotationResourceChangedEventArgs.cs
- MetadataArtifactLoaderCompositeResource.cs
- FunctionImportMapping.cs
- Shape.cs
- columnmapfactory.cs
- SoapCodeExporter.cs
- IMembershipProvider.cs
- BreakRecordTable.cs
- FrameworkTextComposition.cs
- DetectRunnableInstancesTask.cs
- compensatingcollection.cs
- HotSpot.cs
- WhitespaceRuleReader.cs
- TextElementCollection.cs
- ClientSettings.cs
- WebPartEditorOkVerb.cs
- HttpListenerException.cs
- InvokeGenerator.cs
- DbCommandDefinition.cs
- ComponentDispatcherThread.cs
- SqlUdtInfo.cs
- AmbientLight.cs
- SafeReadContext.cs
- RC2.cs
- RegexWorker.cs
- CoTaskMemHandle.cs