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
- OledbConnectionStringbuilder.cs
- WindowsAuthenticationEventArgs.cs
- DBConnection.cs
- PeerInvitationResponse.cs
- ContentPropertyAttribute.cs
- DataGridViewImageCell.cs
- OdbcConnectionOpen.cs
- HttpPostedFile.cs
- NullExtension.cs
- FilteredDataSetHelper.cs
- BoolLiteral.cs
- DSACryptoServiceProvider.cs
- ContentOperations.cs
- HtmlValidatorAdapter.cs
- TemplateApplicationHelper.cs
- InputProcessorProfilesLoader.cs
- ConfigXmlText.cs
- ArgumentException.cs
- SubclassTypeValidator.cs
- SimpleTextLine.cs
- SmtpDateTime.cs
- ContextMenu.cs
- IPAddress.cs
- ViewStateModeByIdAttribute.cs
- CodeTypeDeclaration.cs
- WebRequestModuleElement.cs
- AnnotationComponentChooser.cs
- DockAndAnchorLayout.cs
- PageCache.cs
- ActivitySurrogate.cs
- _ListenerRequestStream.cs
- CursorConverter.cs
- ImpersonateTokenRef.cs
- FileEnumerator.cs
- TranslateTransform3D.cs
- XmlWriterSettings.cs
- DataSourceCacheDurationConverter.cs
- XmlSchemaRedefine.cs
- DataServiceHostWrapper.cs
- MembershipSection.cs
- PageVisual.cs
- FormsAuthenticationCredentials.cs
- RegistryKey.cs
- PartitionerQueryOperator.cs
- TextTrailingWordEllipsis.cs
- XmlDesignerDataSourceView.cs
- WriteTimeStream.cs
- WindowsEditBoxRange.cs
- DBCSCodePageEncoding.cs
- ReadWriteSpinLock.cs
- BufferedOutputStream.cs
- CachedTypeface.cs
- RoutedEventConverter.cs
- ValidatorUtils.cs
- DataTableClearEvent.cs
- Int32Rect.cs
- SizeF.cs
- DataListItemCollection.cs
- SplineKeyFrames.cs
- ConstraintStruct.cs
- TimeSpanParse.cs
- EdmItemError.cs
- SectionUpdates.cs
- RijndaelManagedTransform.cs
- XmlLoader.cs
- DelegateBodyWriter.cs
- EntityParameterCollection.cs
- DataListComponentEditor.cs
- XamlVector3DCollectionSerializer.cs
- ExeContext.cs
- ScrollProperties.cs
- DesignerForm.cs
- MappedMetaModel.cs
- CodeTypeDelegate.cs
- ItemChangedEventArgs.cs
- InputLanguage.cs
- DateTimeUtil.cs
- SynchronizedDisposablePool.cs
- figurelengthconverter.cs
- CallbackHandler.cs
- PropertyValueUIItem.cs
- RequestDescription.cs
- HttpDictionary.cs
- PageRequestManager.cs
- XNameTypeConverter.cs
- DataException.cs
- TypePresenter.xaml.cs
- PixelShader.cs
- XmlTextWriter.cs
- ThumbButtonInfo.cs
- WSHttpBinding.cs
- TreeNodeBindingCollection.cs
- FlatButtonAppearance.cs
- XpsTokenContext.cs
- Vertex.cs
- GroupPartitionExpr.cs
- UpDownEvent.cs
- HMACSHA384.cs
- BlurEffect.cs
- AudioLevelUpdatedEventArgs.cs