Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataWeb / Design / system / Data / EntityModel / LazyTextWriterCreator.cs / 1305376 / LazyTextWriterCreator.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Diagnostics; using System.IO; namespace System.Data.Services.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; private string _targetFilePath; internal LazyTextWriterCreator(string targetFilePath) { Debug.Assert(targetFilePath != null, "targetFilePath parameter is null"); _ownTextWriter = true; _targetFilePath = targetFilePath; } internal LazyTextWriterCreator(TextWriter writer) { _writer = writer; } internal TextWriter GetOrCreateTextWriter() { if (_writer == null) { // lazy creating the writer _writer = new StreamWriter(_targetFilePath); } return _writer; } internal string TargetFilePath { get { return _targetFilePath; } } public void Dispose() { if (_ownTextWriter && _writer != null) { _writer.Dispose(); } GC.SuppressFinalize(this); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Diagnostics; using System.IO; namespace System.Data.Services.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; private string _targetFilePath; internal LazyTextWriterCreator(string targetFilePath) { Debug.Assert(targetFilePath != null, "targetFilePath parameter is null"); _ownTextWriter = true; _targetFilePath = targetFilePath; } internal LazyTextWriterCreator(TextWriter writer) { _writer = writer; } internal TextWriter GetOrCreateTextWriter() { if (_writer == null) { // lazy creating the writer _writer = new StreamWriter(_targetFilePath); } return _writer; } internal string TargetFilePath { get { return _targetFilePath; } } public void Dispose() { if (_ownTextWriter && _writer != null) { _writer.Dispose(); } GC.SuppressFinalize(this); } } } // 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
- SecurityPermission.cs
- DES.cs
- ListBoxAutomationPeer.cs
- regiisutil.cs
- JsonMessageEncoderFactory.cs
- XomlCompilerHelpers.cs
- HtmlTextBoxAdapter.cs
- ButtonPopupAdapter.cs
- SamlAuthorityBinding.cs
- DelegateCompletionCallbackWrapper.cs
- Internal.cs
- ScrollItemPatternIdentifiers.cs
- connectionpool.cs
- AutomationElementCollection.cs
- AttributeQuery.cs
- DoubleConverter.cs
- MethodCallExpression.cs
- AssemblyResourceLoader.cs
- followingsibling.cs
- Exceptions.cs
- x509store.cs
- XmlHierarchyData.cs
- BaseUriHelper.cs
- FillRuleValidation.cs
- ElementHost.cs
- MaterialGroup.cs
- SecurityHeaderLayout.cs
- ObjectListDataBindEventArgs.cs
- SqlConnectionHelper.cs
- SmiEventSink_Default.cs
- AdornedElementPlaceholder.cs
- AnonymousIdentificationModule.cs
- Switch.cs
- TextViewBase.cs
- HttpInputStream.cs
- Rethrow.cs
- ExeConfigurationFileMap.cs
- WebPartsPersonalizationAuthorization.cs
- GridSplitter.cs
- TextRange.cs
- JoinTreeSlot.cs
- MasterPageBuildProvider.cs
- ComponentChangingEvent.cs
- StrokeCollectionConverter.cs
- ResourceManager.cs
- DbConnectionStringCommon.cs
- UTF32Encoding.cs
- CaseCqlBlock.cs
- _SSPIWrapper.cs
- TableCell.cs
- SiteMap.cs
- XmlSchemaInferenceException.cs
- VariableQuery.cs
- WebException.cs
- GridToolTip.cs
- DocumentSchemaValidator.cs
- GridSplitter.cs
- LocatorManager.cs
- TextFormatter.cs
- PlainXmlSerializer.cs
- WriteLineDesigner.xaml.cs
- HttpProfileBase.cs
- FunctionQuery.cs
- UnsafeNativeMethods.cs
- MediaContext.cs
- CalendarModeChangedEventArgs.cs
- AutoGeneratedField.cs
- Rotation3DAnimation.cs
- RegularExpressionValidator.cs
- ConstructorArgumentAttribute.cs
- CopyAttributesAction.cs
- EntityClientCacheEntry.cs
- TextSchema.cs
- DesigntimeLicenseContextSerializer.cs
- CalendarAutoFormat.cs
- CodeCastExpression.cs
- WebBrowserUriTypeConverter.cs
- ConstraintCollection.cs
- ControlPropertyNameConverter.cs
- QuaternionConverter.cs
- DataGridBoolColumn.cs
- XsltConvert.cs
- ExpressionBuilderContext.cs
- XpsResourcePolicy.cs
- ExpressionDumper.cs
- URLIdentityPermission.cs
- _ListenerAsyncResult.cs
- ConnectionManagementElementCollection.cs
- SessionStateUtil.cs
- ToolStripOverflow.cs
- ControlPaint.cs
- DesignerSerializationOptionsAttribute.cs
- followingsibling.cs
- SEHException.cs
- EdmProviderManifest.cs
- StaticSiteMapProvider.cs
- EmissiveMaterial.cs
- ErrorHandlerModule.cs
- HtmlTableCellCollection.cs
- AuthenticationService.cs