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
- SamlAssertionKeyIdentifierClause.cs
- DataSourceControl.cs
- ScopelessEnumAttribute.cs
- FileDialog_Vista_Interop.cs
- externdll.cs
- OleDbErrorCollection.cs
- SqlXmlStorage.cs
- ElementsClipboardData.cs
- PackageProperties.cs
- RuleSettings.cs
- XmlIgnoreAttribute.cs
- Bidi.cs
- WebDescriptionAttribute.cs
- XmlSiteMapProvider.cs
- OneOfElement.cs
- SearchExpression.cs
- NextPreviousPagerField.cs
- InvokeCompletedEventArgs.cs
- SchemaElementDecl.cs
- path.cs
- MailWebEventProvider.cs
- SchemaCollectionCompiler.cs
- MultiSelector.cs
- EntityDataSourceDesigner.cs
- SqlCachedBuffer.cs
- CodeArrayIndexerExpression.cs
- PkcsMisc.cs
- ConfigsHelper.cs
- HttpProxyTransportBindingElement.cs
- ProfileServiceManager.cs
- LocalizabilityAttribute.cs
- CharEnumerator.cs
- X509Chain.cs
- ForEachDesigner.xaml.cs
- ColumnHeaderConverter.cs
- NamedObject.cs
- Expression.cs
- SqlDependency.cs
- UserControlAutomationPeer.cs
- ActivityDesignerHighlighter.cs
- SimpleApplicationHost.cs
- recordstatescratchpad.cs
- TextBoxBase.cs
- MenuCommands.cs
- XmlValueConverter.cs
- ListBase.cs
- FlagsAttribute.cs
- WpfSharedXamlSchemaContext.cs
- Activator.cs
- MetadataProperty.cs
- XmlEntityReference.cs
- WorkflowDesignerMessageFilter.cs
- WebDescriptionAttribute.cs
- PrintSchema.cs
- WaitingCursor.cs
- ProcessHost.cs
- DataList.cs
- DependencyObjectCodeDomSerializer.cs
- HttpTransportBindingElement.cs
- TemplateBindingExpressionConverter.cs
- TargetControlTypeCache.cs
- CommandManager.cs
- RenderDataDrawingContext.cs
- Graph.cs
- streamingZipPartStream.cs
- VisualBasicValue.cs
- ProgramPublisher.cs
- ImageSourceConverter.cs
- App.cs
- UnsafeNativeMethods.cs
- AbandonedMutexException.cs
- ModulesEntry.cs
- InplaceBitmapMetadataWriter.cs
- WorkflowWebHostingModule.cs
- Header.cs
- AlternateViewCollection.cs
- MenuItem.cs
- DynamicDataResources.Designer.cs
- Brush.cs
- HtmlInputRadioButton.cs
- PropertyPath.cs
- HMACSHA512.cs
- XmlMembersMapping.cs
- MaterialGroup.cs
- EmptyEnumerator.cs
- Enlistment.cs
- XmlDataDocument.cs
- DataGridViewRowCancelEventArgs.cs
- TreeNodeStyle.cs
- HttpCachePolicy.cs
- DocumentsTrace.cs
- ClearCollection.cs
- MLangCodePageEncoding.cs
- DataSourceControl.cs
- CodeGroup.cs
- WriteLine.cs
- ProfileBuildProvider.cs
- linebase.cs
- WebRequestModulesSection.cs
- MobileControlBuilder.cs