Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RegionInfo.cs
- Vector3DValueSerializer.cs
- BmpBitmapEncoder.cs
- FlowDocumentScrollViewer.cs
- XmlSerializerFactory.cs
- HttpRawResponse.cs
- Size3D.cs
- XmlDownloadManager.cs
- MetadataArtifactLoader.cs
- SafeNativeMethods.cs
- DataBindingCollection.cs
- Utils.cs
- SubclassTypeValidatorAttribute.cs
- BinaryObjectReader.cs
- CommandConverter.cs
- Parameter.cs
- basevalidator.cs
- SafeRightsManagementHandle.cs
- RawAppCommandInputReport.cs
- PnrpPeerResolver.cs
- SQLBinary.cs
- ItemMap.cs
- StylusCollection.cs
- TransformationRules.cs
- CryptoApi.cs
- IgnorePropertiesAttribute.cs
- UrlMappingsModule.cs
- XmlSerializerFactory.cs
- TableLayoutPanelBehavior.cs
- EntityFunctions.cs
- Viewport3DAutomationPeer.cs
- ConfigurationSection.cs
- MonikerUtility.cs
- DoubleAnimationUsingPath.cs
- DateTimeFormat.cs
- TdsParserSessionPool.cs
- HiddenField.cs
- ScrollPattern.cs
- TrackingProfileCache.cs
- NonClientArea.cs
- ImageFormat.cs
- PrinterSettings.cs
- ServiceNameElementCollection.cs
- COMException.cs
- Hex.cs
- UnicodeEncoding.cs
- DataMisalignedException.cs
- DependencyPropertyKey.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- SecuritySessionSecurityTokenAuthenticator.cs
- XsltOutput.cs
- OleStrCAMarshaler.cs
- XPathNodePointer.cs
- Util.cs
- StyleCollection.cs
- Rectangle.cs
- MarkupWriter.cs
- XsdValidatingReader.cs
- TreeNodeMouseHoverEvent.cs
- DesignTimeXamlWriter.cs
- DocumentReferenceCollection.cs
- ConstructorExpr.cs
- XmlSchemaAnnotated.cs
- ActivityBindForm.cs
- HMACSHA384.cs
- QuaternionRotation3D.cs
- SystemKeyConverter.cs
- ObjectListField.cs
- XamlTemplateSerializer.cs
- WebPartConnectionsConnectVerb.cs
- WindowsRegion.cs
- WindowsListViewGroupSubsetLink.cs
- SqlConnectionStringBuilder.cs
- Object.cs
- String.cs
- XmlDocumentSerializer.cs
- LambdaCompiler.Generated.cs
- Point3D.cs
- MenuItemBindingCollection.cs
- MenuScrollingVisibilityConverter.cs
- PageThemeCodeDomTreeGenerator.cs
- PageParserFilter.cs
- AsyncStreamReader.cs
- XXXOnTypeBuilderInstantiation.cs
- ValidationErrorCollection.cs
- Enlistment.cs
- StringSorter.cs
- ExpressionLexer.cs
- TabControl.cs
- ValueChangedEventManager.cs
- TypeResolvingOptions.cs
- Form.cs
- MultipartIdentifier.cs
- PageHandlerFactory.cs
- FunctionQuery.cs
- GridViewRowCollection.cs
- DefaultObjectMappingItemCollection.cs
- ParallelLoopState.cs
- EmptyCollection.cs
- UnknownMessageReceivedEventArgs.cs