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
- ExpressionList.cs
- SrgsElementFactory.cs
- DataViewSettingCollection.cs
- DbParameterHelper.cs
- SecondaryIndexDefinition.cs
- DependencyPropertyKind.cs
- AbandonedMutexException.cs
- TextBoxView.cs
- StringCollection.cs
- CompModSwitches.cs
- IntSecurity.cs
- PathFigureCollection.cs
- ToolStripSystemRenderer.cs
- RangeValueProviderWrapper.cs
- WorkflowEnvironment.cs
- TextDecoration.cs
- UrlMappingsSection.cs
- PackWebRequestFactory.cs
- SignatureDescription.cs
- EventDescriptorCollection.cs
- StoryFragments.cs
- DirtyTextRange.cs
- LazyTextWriterCreator.cs
- MenuCommandService.cs
- DBDataPermission.cs
- LogReserveAndAppendState.cs
- CheckBoxField.cs
- TransformDescriptor.cs
- DesignConnection.cs
- DataSvcMapFile.cs
- ActivitiesCollection.cs
- PropertyDescriptorComparer.cs
- ZoneButton.cs
- DefaultCommandConverter.cs
- Geometry3D.cs
- TextTreeTextBlock.cs
- OptimizedTemplateContent.cs
- Number.cs
- IsolatedStoragePermission.cs
- EmptyWorkItem.cs
- ConnectionStringsExpressionBuilder.cs
- GroupQuery.cs
- SchemaHelper.cs
- ElementsClipboardData.cs
- HMACSHA384.cs
- SemanticResolver.cs
- PluralizationServiceUtil.cs
- SelectingProviderEventArgs.cs
- BinaryQueryOperator.cs
- ToolStripButton.cs
- SecureStringHasher.cs
- RuntimeEnvironment.cs
- ClientBuildManagerCallback.cs
- StyleHelper.cs
- DelimitedListTraceListener.cs
- DBSqlParserTable.cs
- WebEventTraceProvider.cs
- ObjectDataSourceSelectingEventArgs.cs
- EventSourceCreationData.cs
- RegexFCD.cs
- DataGridColumnReorderingEventArgs.cs
- GridView.cs
- odbcmetadatacollectionnames.cs
- NavigatorInput.cs
- ProcessManager.cs
- _ServiceNameStore.cs
- BindingMemberInfo.cs
- validationstate.cs
- Byte.cs
- OutputCacheModule.cs
- GridViewItemAutomationPeer.cs
- ping.cs
- SqlFlattener.cs
- AppDomainShutdownMonitor.cs
- DefaultAutoFieldGenerator.cs
- RoutedEventArgs.cs
- Grant.cs
- DataControlFieldCell.cs
- PrimaryKeyTypeConverter.cs
- HtmlInputRadioButton.cs
- SByte.cs
- AsyncOperationManager.cs
- ExplicitDiscriminatorMap.cs
- DtdParser.cs
- HeaderUtility.cs
- Rect3DConverter.cs
- WinEventHandler.cs
- HwndMouseInputProvider.cs
- ClusterUtils.cs
- GraphicsPath.cs
- XmlExpressionDumper.cs
- InvokeHandlers.cs
- ButtonStandardAdapter.cs
- ColumnMapCopier.cs
- StandardBindingOptionalReliableSessionElement.cs
- WriterOutput.cs
- Function.cs
- MappingSource.cs
- IdentityNotMappedException.cs
- ColorBlend.cs