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
- IndexedString.cs
- PropertyTabAttribute.cs
- HScrollBar.cs
- ConstructorArgumentAttribute.cs
- ColumnMapTranslator.cs
- WebPartCollection.cs
- ChangeBlockUndoRecord.cs
- ProfileService.cs
- SmiConnection.cs
- ProfilePropertyMetadata.cs
- BrushMappingModeValidation.cs
- QueuePathEditor.cs
- LayoutUtils.cs
- MSAAWinEventWrap.cs
- DecoderNLS.cs
- AsyncOperation.cs
- ServiceDesigner.xaml.cs
- SapiRecoContext.cs
- XmlSchemaValidationException.cs
- InitializerFacet.cs
- StringUtil.cs
- TcpSocketManager.cs
- ProcessInfo.cs
- ScalarConstant.cs
- SmtpNtlmAuthenticationModule.cs
- BuildManagerHost.cs
- EntityModelSchemaGenerator.cs
- ParameterBuilder.cs
- WebInvokeAttribute.cs
- XmlSignatureManifest.cs
- FileVersionInfo.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- HtmlInputFile.cs
- XmlILIndex.cs
- FormViewModeEventArgs.cs
- FontTypeConverter.cs
- ComponentSerializationService.cs
- _NetworkingPerfCounters.cs
- GroupBox.cs
- RootProfilePropertySettingsCollection.cs
- PropertyDescriptorComparer.cs
- BindingNavigator.cs
- X509CertificateChain.cs
- OleDbCommandBuilder.cs
- HelpInfo.cs
- MapPathBasedVirtualPathProvider.cs
- EventSchemaTraceListener.cs
- TypeSystem.cs
- DbBuffer.cs
- CompareValidator.cs
- CatalogPartDesigner.cs
- ContextMarshalException.cs
- JsonDataContract.cs
- DependencySource.cs
- RegexTree.cs
- HtmlTableCellCollection.cs
- SafeNativeMethods.cs
- SafeCertificateContext.cs
- EmulateRecognizeCompletedEventArgs.cs
- ColorBlend.cs
- Header.cs
- XmlArrayItemAttribute.cs
- InputScope.cs
- IndentedTextWriter.cs
- PageContent.cs
- IndentedTextWriter.cs
- ProvideValueServiceProvider.cs
- OneToOneMappingSerializer.cs
- AQNBuilder.cs
- StdValidatorsAndConverters.cs
- WebPartHelpVerb.cs
- SafeLocalMemHandle.cs
- Missing.cs
- cache.cs
- MailWebEventProvider.cs
- DBParameter.cs
- GenericIdentity.cs
- BuildProviderInstallComponent.cs
- DataGridHelper.cs
- PeerNameRecord.cs
- TreeNodeSelectionProcessor.cs
- BufferBuilder.cs
- QueryCursorEventArgs.cs
- AssertSection.cs
- HtmlInputReset.cs
- NamespaceTable.cs
- WebDisplayNameAttribute.cs
- PrintDocument.cs
- SplitterCancelEvent.cs
- GiveFeedbackEvent.cs
- TransformDescriptor.cs
- CheckBoxAutomationPeer.cs
- LocalValueEnumerator.cs
- OleTxTransaction.cs
- ValidationError.cs
- RankException.cs
- DropShadowEffect.cs
- IncrementalHitTester.cs
- ResizeBehavior.cs
- ValidationSettings.cs