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
- Label.cs
- TextViewBase.cs
- PropertyMapper.cs
- SizeAnimation.cs
- AccessKeyManager.cs
- Accessible.cs
- SamlAssertionDirectKeyIdentifierClause.cs
- SymbolEqualComparer.cs
- SubMenuStyleCollection.cs
- DataGridRowClipboardEventArgs.cs
- WebScriptEnablingBehavior.cs
- QueryContinueDragEvent.cs
- ConnectionPoint.cs
- PermissionToken.cs
- PeerCustomResolverSettings.cs
- CompilationRelaxations.cs
- ListenerElementsCollection.cs
- SiteMapProvider.cs
- CaseInsensitiveComparer.cs
- XD.cs
- Point3DConverter.cs
- NavigationProperty.cs
- initElementDictionary.cs
- FreeFormDesigner.cs
- BindingNavigatorDesigner.cs
- PriorityQueue.cs
- Vector3DAnimation.cs
- DBConnectionString.cs
- NotSupportedException.cs
- ExternalException.cs
- FileVersionInfo.cs
- MatrixKeyFrameCollection.cs
- DesignerVerb.cs
- UnsafeNativeMethods.cs
- DataColumnCollection.cs
- TranslateTransform3D.cs
- MachineKeySection.cs
- MulticastOption.cs
- ConsoleTraceListener.cs
- HttpCapabilitiesEvaluator.cs
- Style.cs
- RangeContentEnumerator.cs
- ProjectedWrapper.cs
- Number.cs
- SaveFileDialog.cs
- Rss20ItemFormatter.cs
- ListBoxItemWrapperAutomationPeer.cs
- ConnectionInterfaceCollection.cs
- DesignerAttribute.cs
- Int32.cs
- ImpersonationContext.cs
- IdleTimeoutMonitor.cs
- CompiledELinqQueryState.cs
- NativeMethods.cs
- WmlSelectionListAdapter.cs
- BamlLocalizableResourceKey.cs
- LOSFormatter.cs
- SecurityContext.cs
- UpdatePanel.cs
- SubtreeProcessor.cs
- TdsParser.cs
- HMACMD5.cs
- DataControlPagerLinkButton.cs
- OptimalBreakSession.cs
- ScriptComponentDescriptor.cs
- Border.cs
- GeometryModel3D.cs
- UITypeEditors.cs
- SineEase.cs
- ContextMenu.cs
- HttpCachePolicyBase.cs
- AuthenticateEventArgs.cs
- DataControlFieldCell.cs
- BrowsableAttribute.cs
- DelegatingTypeDescriptionProvider.cs
- ApplicationInfo.cs
- DoubleConverter.cs
- TableRow.cs
- ZoneMembershipCondition.cs
- TreeViewBindingsEditorForm.cs
- IntegerValidator.cs
- IisNotInstalledException.cs
- FileNotFoundException.cs
- unitconverter.cs
- CodeArrayIndexerExpression.cs
- ItemMap.cs
- SiteMapSection.cs
- NavigationWindowAutomationPeer.cs
- MimeParameter.cs
- MenuItemBindingCollection.cs
- InplaceBitmapMetadataWriter.cs
- FrameworkElementAutomationPeer.cs
- CanonicalFormWriter.cs
- ADMembershipUser.cs
- SHA256CryptoServiceProvider.cs
- BinaryCommonClasses.cs
- unsafenativemethodsother.cs
- UxThemeWrapper.cs
- Control.cs
- TextInfo.cs