Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------------- //// 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
- FileUtil.cs
- BrushConverter.cs
- TypeValidationEventArgs.cs
- RuntimeConfigLKG.cs
- SystemException.cs
- DesignerForm.cs
- CodeSpit.cs
- PrtCap_Builder.cs
- ModuleElement.cs
- GenericTransactionFlowAttribute.cs
- JulianCalendar.cs
- EncoderNLS.cs
- Constants.cs
- MessageEventSubscriptionService.cs
- WebPartConnectionsConnectVerb.cs
- BinaryParser.cs
- PropertyCondition.cs
- QueueProcessor.cs
- SQLString.cs
- WebReferenceOptions.cs
- HttpBindingExtension.cs
- ButtonBase.cs
- DataBindEngine.cs
- StylusTip.cs
- TextBoxRenderer.cs
- PeerToPeerException.cs
- SoapIgnoreAttribute.cs
- RenderCapability.cs
- InitiatorSessionSymmetricMessageSecurityProtocol.cs
- WebPartConnectionsCancelEventArgs.cs
- MenuAdapter.cs
- TraceListeners.cs
- CultureMapper.cs
- FrameDimension.cs
- ViewGenerator.cs
- CallSite.cs
- ToolStripComboBox.cs
- RuleSetCollection.cs
- HttpHeaderCollection.cs
- AnimatedTypeHelpers.cs
- DataControlFieldHeaderCell.cs
- ListViewHitTestInfo.cs
- LoginView.cs
- FloaterParaClient.cs
- Listbox.cs
- RepeatInfo.cs
- LogicalExpr.cs
- Dictionary.cs
- ObjectViewQueryResultData.cs
- RegexMatch.cs
- DataServiceResponse.cs
- FieldBuilder.cs
- ProfileService.cs
- ToolboxBitmapAttribute.cs
- cryptoapiTransform.cs
- DetailsViewCommandEventArgs.cs
- TypeBuilder.cs
- ExpressionEditorSheet.cs
- SortDescription.cs
- XmlReader.cs
- BitmapSource.cs
- ConfigurationPermission.cs
- StylusEventArgs.cs
- CngAlgorithmGroup.cs
- PermissionSet.cs
- TemplateBaseAction.cs
- ExtendedPropertyCollection.cs
- Profiler.cs
- StylusOverProperty.cs
- StartUpEventArgs.cs
- RC2.cs
- TemplateControl.cs
- ScriptModule.cs
- Accessible.cs
- DataGridViewColumnHeaderCell.cs
- DrawListViewColumnHeaderEventArgs.cs
- ListControlConvertEventArgs.cs
- SoundPlayer.cs
- XPathEmptyIterator.cs
- FixedTextSelectionProcessor.cs
- ClientSideQueueItem.cs
- CompiledRegexRunnerFactory.cs
- BinaryQueryOperator.cs
- SpecularMaterial.cs
- ManifestBasedResourceGroveler.cs
- MetaDataInfo.cs
- ValidatorCollection.cs
- NameValueSectionHandler.cs
- ApplicationFileCodeDomTreeGenerator.cs
- PrePrepareMethodAttribute.cs
- SiteMapDataSource.cs
- ListenUriMode.cs
- SwitchElementsCollection.cs
- OleDbInfoMessageEvent.cs
- BufferedGraphicsContext.cs
- LogLogRecord.cs
- ResolveNameEventArgs.cs
- ChildrenQuery.cs
- DateBoldEvent.cs
- DecimalAnimationUsingKeyFrames.cs