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
- _PooledStream.cs
- AutoSizeComboBox.cs
- MdImport.cs
- RawMouseInputReport.cs
- IdentifierCreationService.cs
- PeerSecurityManager.cs
- ObjectComplexPropertyMapping.cs
- TabControlAutomationPeer.cs
- OdbcParameterCollection.cs
- PixelShader.cs
- DefaultExpression.cs
- HiddenFieldPageStatePersister.cs
- XmlSignificantWhitespace.cs
- SiteMapDataSource.cs
- WeakReadOnlyCollection.cs
- CellCreator.cs
- PasswordRecovery.cs
- LogExtent.cs
- PlatformNotSupportedException.cs
- TextProperties.cs
- XmlSchemaImporter.cs
- ViewManager.cs
- Point3D.cs
- TagPrefixAttribute.cs
- ConfigurationValidatorAttribute.cs
- RegexRunner.cs
- RuntimeConfig.cs
- ParameterElementCollection.cs
- MediaTimeline.cs
- XmlFormatReaderGenerator.cs
- ManagementClass.cs
- SymbolEqualComparer.cs
- InvokeGenerator.cs
- VisualTarget.cs
- ComponentDispatcher.cs
- Pen.cs
- ExpressionEditorAttribute.cs
- CmsUtils.cs
- BinaryConverter.cs
- ProcessThread.cs
- KeyInstance.cs
- SafeNativeMethods.cs
- SimpleHandlerFactory.cs
- IntSecurity.cs
- FixedTextPointer.cs
- messageonlyhwndwrapper.cs
- OdbcConnectionOpen.cs
- GB18030Encoding.cs
- PointAnimation.cs
- DataList.cs
- PathGradientBrush.cs
- CapiSymmetricAlgorithm.cs
- KeyboardNavigation.cs
- InsufficientMemoryException.cs
- Signature.cs
- Codec.cs
- WebService.cs
- PropertyCollection.cs
- SimpleTypeResolver.cs
- Base64Encoder.cs
- ToolboxDataAttribute.cs
- SweepDirectionValidation.cs
- FontFamilyIdentifier.cs
- SafeMarshalContext.cs
- TraceUtility.cs
- PageRequestManager.cs
- ChannelServices.cs
- DesigntimeLicenseContextSerializer.cs
- ToolStripDropDownItem.cs
- EntityContainer.cs
- EntityChangedParams.cs
- ServiceObjectContainer.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- SiteMapHierarchicalDataSourceView.cs
- HealthMonitoringSection.cs
- ScrollChrome.cs
- KeyPressEvent.cs
- TCPListener.cs
- OracleTransaction.cs
- XmlBoundElement.cs
- TextDecoration.cs
- TaskExtensions.cs
- RotateTransform.cs
- PolicyUnit.cs
- TextStore.cs
- LogicalExpressionTypeConverter.cs
- ScriptingRoleServiceSection.cs
- Statements.cs
- DiscoveryService.cs
- PageCatalogPart.cs
- VectorConverter.cs
- ListBindingHelper.cs
- MultiView.cs
- HttpApplicationStateBase.cs
- EncoderExceptionFallback.cs
- DynamicValidatorEventArgs.cs
- TypeSystem.cs
- ComponentRenameEvent.cs
- WSSecureConversationDec2005.cs
- XmlSchemaExternal.cs