Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataWeb / Design / system / Data / EntityModel / LazyTextWriterCreator.cs / 2 / 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;
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();
}
}
}
}
// 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;
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();
}
}
}
}
// 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
- RecordBuilder.cs
- ConnectionProviderAttribute.cs
- WindowsSlider.cs
- RegexBoyerMoore.cs
- PowerModeChangedEventArgs.cs
- CustomErrorsSection.cs
- CustomActivityDesigner.cs
- EmulateRecognizeCompletedEventArgs.cs
- ItemCheckEvent.cs
- CqlQuery.cs
- MembershipAdapter.cs
- FormDocumentDesigner.cs
- TemplateColumn.cs
- SystemIPGlobalProperties.cs
- SqlBulkCopy.cs
- SoapAttributeOverrides.cs
- AtlasWeb.Designer.cs
- IntPtr.cs
- PathData.cs
- PublisherIdentityPermission.cs
- JournalNavigationScope.cs
- DbMetaDataFactory.cs
- ImageCodecInfo.cs
- XmlWhitespace.cs
- _SafeNetHandles.cs
- DataGridDetailsPresenterAutomationPeer.cs
- CodeTypeReferenceExpression.cs
- SharedConnectionWorkflowTransactionService.cs
- DynamicDataExtensions.cs
- _ShellExpression.cs
- panel.cs
- SHA256.cs
- RulePatternOps.cs
- DesignerVerbCollection.cs
- ObjectComplexPropertyMapping.cs
- TextLineBreak.cs
- OverlappedContext.cs
- XmlComment.cs
- StatusBarAutomationPeer.cs
- GenericNameHandler.cs
- HeaderedItemsControl.cs
- ToolboxCategoryItems.cs
- RtfControls.cs
- RayHitTestParameters.cs
- PictureBox.cs
- OpCopier.cs
- DataTableExtensions.cs
- propertytag.cs
- EqualityComparer.cs
- _UriTypeConverter.cs
- DocumentGrid.cs
- SiteMapNode.cs
- FilePrompt.cs
- ProfileManager.cs
- TextTreeNode.cs
- PeerResolver.cs
- DrawingGroup.cs
- SqlCacheDependencySection.cs
- ConvertEvent.cs
- GCHandleCookieTable.cs
- CollectionsUtil.cs
- VisualTarget.cs
- Track.cs
- ToolStripOverflow.cs
- SharedUtils.cs
- TdsParserHelperClasses.cs
- WebServiceErrorEvent.cs
- PersonalizationAdministration.cs
- GraphicsContext.cs
- DashStyles.cs
- TypeUtil.cs
- RootContext.cs
- Privilege.cs
- Events.cs
- TemplatePartAttribute.cs
- SurrogateEncoder.cs
- DuplicateDetector.cs
- VariableExpressionConverter.cs
- ListControl.cs
- ThreadStaticAttribute.cs
- TraceRecords.cs
- SpeechAudioFormatInfo.cs
- AttributeCollection.cs
- Int32Rect.cs
- ControlBindingsCollection.cs
- ConfigViewGenerator.cs
- CurrentTimeZone.cs
- TimerEventSubscription.cs
- HttpContext.cs
- Encoder.cs
- SafeTokenHandle.cs
- SafeFindHandle.cs
- NonClientArea.cs
- QueryReaderSettings.cs
- ThreadWorkerController.cs
- XmlMtomReader.cs
- XmlWrappingWriter.cs
- ExecutionEngineException.cs
- IChannel.cs
- _RequestCacheProtocol.cs