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
- DataGridViewSelectedCellsAccessibleObject.cs
- WhitespaceRuleReader.cs
- DataChangedEventManager.cs
- SystemResourceKey.cs
- OracleLob.cs
- EncryptedXml.cs
- RealizationDrawingContextWalker.cs
- PluralizationService.cs
- Pair.cs
- RegistryConfigurationProvider.cs
- AuthenticatedStream.cs
- SerialPort.cs
- StoreContentChangedEventArgs.cs
- SqlConnectionManager.cs
- HtmlUtf8RawTextWriter.cs
- IsolatedStoragePermission.cs
- PageTextBox.cs
- ContextBase.cs
- SqlConnectionString.cs
- BaseDataBoundControl.cs
- RegexCode.cs
- TextServicesCompartmentContext.cs
- Translator.cs
- SafeEventLogWriteHandle.cs
- BroadcastEventHelper.cs
- InputLanguageEventArgs.cs
- Trace.cs
- PropVariant.cs
- ObjectSecurityT.cs
- Floater.cs
- Token.cs
- Panel.cs
- TargetParameterCountException.cs
- TextSelection.cs
- CompressedStack.cs
- NotSupportedException.cs
- Encoder.cs
- RegexParser.cs
- SecurityManager.cs
- SQLBinary.cs
- ToolStripButton.cs
- XPathDescendantIterator.cs
- Point3DCollectionConverter.cs
- ReachDocumentSequenceSerializerAsync.cs
- ContainerUIElement3D.cs
- DataBinder.cs
- dtdvalidator.cs
- Parallel.cs
- WorkflowHostingEndpoint.cs
- BaseProcessProtocolHandler.cs
- KeyConverter.cs
- indexingfiltermarshaler.cs
- HtmlImage.cs
- CellTreeNode.cs
- ColorMap.cs
- DrawListViewSubItemEventArgs.cs
- BaseTemplateParser.cs
- IHttpResponseInternal.cs
- ArrayExtension.cs
- EncodingDataItem.cs
- TypeInfo.cs
- LoadGrammarCompletedEventArgs.cs
- WrappingXamlSchemaContext.cs
- FormViewUpdateEventArgs.cs
- GenericsInstances.cs
- XmlLanguage.cs
- TransferMode.cs
- XmlArrayItemAttributes.cs
- Pen.cs
- FrameworkContentElementAutomationPeer.cs
- DecoderBestFitFallback.cs
- ConfigXmlText.cs
- HtmlTernaryTree.cs
- SemanticBasicElement.cs
- ProcessHostConfigUtils.cs
- ObjectListDataBindEventArgs.cs
- ControlIdConverter.cs
- RTLAwareMessageBox.cs
- CodePageEncoding.cs
- FormsAuthenticationCredentials.cs
- DataTemplate.cs
- PageContentCollection.cs
- Variant.cs
- StreamSecurityUpgradeProvider.cs
- ReceiveContext.cs
- ConfigXmlComment.cs
- EntityTransaction.cs
- DataGridViewColumnStateChangedEventArgs.cs
- ConfigXmlText.cs
- DispatcherProcessingDisabled.cs
- GridViewRowPresenter.cs
- UpDownEvent.cs
- CharEnumerator.cs
- FontStretch.cs
- StandardOleMarshalObject.cs
- SerializerProvider.cs
- SectionVisual.cs
- ZipIOFileItemStream.cs
- String.cs
- Error.cs