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
- XPathSingletonIterator.cs
- XamlInt32CollectionSerializer.cs
- DataSourceProvider.cs
- Button.cs
- WindowsToolbarItemAsMenuItem.cs
- CFStream.cs
- PlainXmlWriter.cs
- MulticastIPAddressInformationCollection.cs
- DiagnosticsConfiguration.cs
- util.cs
- TcpTransportSecurityElement.cs
- SelectorItemAutomationPeer.cs
- PersonalizationStateQuery.cs
- EntitySqlQueryCacheKey.cs
- EntityContainerEmitter.cs
- EmptyStringExpandableObjectConverter.cs
- OleDbCommand.cs
- DrawingImage.cs
- DataGridViewElement.cs
- ItemCheckedEvent.cs
- HyperLinkStyle.cs
- DebugView.cs
- Utils.cs
- GridViewRowEventArgs.cs
- LinqDataSourceContextEventArgs.cs
- DesignerTextBoxAdapter.cs
- ConnectionStringsExpressionEditor.cs
- XPathNavigator.cs
- Util.cs
- ToolStripTextBox.cs
- ServicesUtilities.cs
- XhtmlBasicImageAdapter.cs
- FormClosedEvent.cs
- TdsValueSetter.cs
- WebPartHeaderCloseVerb.cs
- SmtpDigestAuthenticationModule.cs
- ValidationErrorCollection.cs
- ViewGenerator.cs
- Transform3DGroup.cs
- BitmapVisualManager.cs
- securitycriticaldataformultiplegetandset.cs
- ResXResourceReader.cs
- DataGridCellsPanel.cs
- UIElementAutomationPeer.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- SiteMapHierarchicalDataSourceView.cs
- CodeExpressionStatement.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- EntityContainerAssociationSetEnd.cs
- ServiceDescriptionSerializer.cs
- objectquery_tresulttype.cs
- xml.cs
- SimpleTableProvider.cs
- XamlSerializerUtil.cs
- ListenerElementsCollection.cs
- ValidatingPropertiesEventArgs.cs
- CodeLabeledStatement.cs
- X509ImageLogo.cs
- VBCodeProvider.cs
- FacetValues.cs
- GridViewDeletedEventArgs.cs
- TemplateControlBuildProvider.cs
- CorrelationTokenInvalidatedHandler.cs
- FixUp.cs
- SchemaMapping.cs
- StoreAnnotationsMap.cs
- figurelengthconverter.cs
- FtpWebResponse.cs
- TextElement.cs
- XmlArrayItemAttributes.cs
- Model3DCollection.cs
- SqlInternalConnectionSmi.cs
- HotSpotCollection.cs
- ClientScriptManagerWrapper.cs
- securestring.cs
- RemotingAttributes.cs
- Missing.cs
- IncrementalHitTester.cs
- WindowsListViewGroupSubsetLink.cs
- RectConverter.cs
- FilterException.cs
- SqlReferenceCollection.cs
- MachineSettingsSection.cs
- HttpHeaderCollection.cs
- ResourceReferenceKeyNotFoundException.cs
- TextBlockAutomationPeer.cs
- InvalidDataException.cs
- TextContainer.cs
- ClientConvert.cs
- SimpleMailWebEventProvider.cs
- BmpBitmapEncoder.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- CalendarDesigner.cs
- LookupNode.cs
- DocumentXmlWriter.cs
- UInt64.cs
- input.cs
- XmlSchemaFacet.cs
- ClientConvert.cs
- SamlDoNotCacheCondition.cs