Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataEntityDesign / Design / System / Data / EntityModel / LazyTextWriterCreator.cs / 1 / 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.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;
}
internal LazyTextWriterCreator(string targetFilePath)
{
Debug.Assert(targetFilePath != null, "targetFilePath parameter is null");
_ownTextWriter = true;
_targetFilePath = targetFilePath;
}
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.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;
}
internal LazyTextWriterCreator(string targetFilePath)
{
Debug.Assert(targetFilePath != null, "targetFilePath parameter is null");
_ownTextWriter = true;
_targetFilePath = targetFilePath;
}
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
- Query.cs
- CmsUtils.cs
- WebPartManagerInternals.cs
- StandardToolWindows.cs
- TextBounds.cs
- EntityConnection.cs
- TraceFilter.cs
- ImageInfo.cs
- DateTimeOffsetConverter.cs
- SynchronizationLockException.cs
- RowsCopiedEventArgs.cs
- DbParameterHelper.cs
- PopOutPanel.cs
- SQLMembershipProvider.cs
- LogRestartAreaEnumerator.cs
- DefaultMemberAttribute.cs
- SmtpCommands.cs
- Sorting.cs
- ToolStripItem.cs
- ListDataHelper.cs
- DataObjectAttribute.cs
- Substitution.cs
- CorrelationResolver.cs
- RedirectionProxy.cs
- TabControlEvent.cs
- PersonalizableAttribute.cs
- CodeDomLocalizationProvider.cs
- SqlDataSourceCommandEventArgs.cs
- StyleTypedPropertyAttribute.cs
- SpotLight.cs
- RuleSetBrowserDialog.cs
- VirtualStackFrame.cs
- DataSourceCache.cs
- LineVisual.cs
- SwitchAttribute.cs
- FontFamilyIdentifier.cs
- WorkflowEnvironment.cs
- InputScope.cs
- EncryptedType.cs
- TableLayoutStyle.cs
- Size3DValueSerializer.cs
- Comparer.cs
- DocumentPageTextView.cs
- FrameAutomationPeer.cs
- CheckBoxFlatAdapter.cs
- LineGeometry.cs
- NamedPipeConnectionPool.cs
- BinaryExpressionHelper.cs
- XPathDocumentBuilder.cs
- Expression.DebuggerProxy.cs
- RuntimeVariablesExpression.cs
- PrintingPermission.cs
- ListViewCancelEventArgs.cs
- MediaPlayer.cs
- SecurityPolicySection.cs
- TriggerCollection.cs
- DoubleLink.cs
- SynchronizationFilter.cs
- ObjectCloneHelper.cs
- FileUtil.cs
- Matrix.cs
- OleDbInfoMessageEvent.cs
- Privilege.cs
- cookieexception.cs
- XmlWrappingReader.cs
- AdjustableArrowCap.cs
- __Filters.cs
- HtmlToClrEventProxy.cs
- XmlSiteMapProvider.cs
- InkCollectionBehavior.cs
- DesignerTransaction.cs
- FileChangesMonitor.cs
- SequenceRange.cs
- BaseComponentEditor.cs
- UserControlBuildProvider.cs
- ExtendLockAsyncResult.cs
- recordstatescratchpad.cs
- TrustManager.cs
- _BaseOverlappedAsyncResult.cs
- ExeContext.cs
- BuildProvider.cs
- ArgumentDirectionHelper.cs
- X509CertificateTrustedIssuerElement.cs
- FastEncoderStatics.cs
- OracleConnectionStringBuilder.cs
- HandleCollector.cs
- XmlSchemaValidationException.cs
- DataTableReader.cs
- SoapObjectInfo.cs
- MessageFilterTable.cs
- IndexingContentUnit.cs
- ClaimTypes.cs
- CollectionType.cs
- XpsResource.cs
- QueryExecutionOption.cs
- DocumentEventArgs.cs
- CircleHotSpot.cs
- Merger.cs
- XmlSerializerOperationBehavior.cs
- XmlUrlResolver.cs