Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Metadata / MetadataArtifactLoaderFile.cs / 1305376 / MetadataArtifactLoaderFile.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Collections.Generic; using System.Collections; using System.Diagnostics; using System.Globalization; using System.Reflection; using System.Text; using System.Xml; using System.Data.Mapping; using System.IO; using System.Security; using System.Security.Permissions; using System.Security.Cryptography; using System.Data.EntityModel.SchemaObjectModel; using System.Threading; using System.Runtime.Versioning; namespace System.Data.Metadata.Edm { ////// This class represents one file-based artifact item to be loaded. /// internal class MetadataArtifactLoaderFile : MetadataArtifactLoader, IComparable { ////// This member indicates whether the file-based artifact has already been loaded. /// It is used to prevent other instances of this class from (re)loading the same /// artifact. See comment in the MetadataArtifactLoaderFile c'tor below. /// private readonly bool _alreadyLoaded = false; private readonly string _path; ////// Constructor /// /// The path to the resource to load /// The global registry of URIs [ResourceExposure(ResourceScope.Machine)] //Exposes the file path which is a Machine resource public MetadataArtifactLoaderFile(string path, ICollectionuriRegistry) { _path = path; _alreadyLoaded = uriRegistry.Contains(_path); if (!_alreadyLoaded) { uriRegistry.Add(_path); // '_alreadyLoaded' is not set because while we would like to prevent // other instances of MetadataArtifactLoaderFile that wrap the same // _path from being added to the list of paths/readers, we do want to // include this particular instance. } } public override string Path { get { return _path; } } /// /// Implementation of IComparable.CompareTo() /// /// The object to compare to ///0 if the loaders are "equal" (i.e., have the same _path value) public int CompareTo(object obj) { MetadataArtifactLoaderFile loader = obj as MetadataArtifactLoaderFile; if (loader != null) { return string.Compare(_path, loader._path, StringComparison.OrdinalIgnoreCase); } Debug.Assert(false, "object is not a MetadataArtifactLoaderFile"); return -1; } ////// Equals() returns true if the objects have the same _path value /// /// The object to compare to ///true if the objects have the same _path value public override bool Equals(object obj) { return this.CompareTo(obj) == 0; } ////// GetHashCode override that defers the result to the _path member variable. /// ///public override int GetHashCode() { return _path.GetHashCode(); } public override void CollectFilePermissionPaths(List paths, DataSpace spaceToGet) { if (!_alreadyLoaded && MetadataArtifactLoader.IsArtifactOfDataSpace(_path, spaceToGet)) { paths.Add(_path); } } /// /// Get paths to artifacts for a specific DataSpace. /// /// The DataSpace for the artifacts of interest ///A List of strings identifying paths to all artifacts for a specific DataSpace public override ListGetPaths(DataSpace spaceToGet) { List list = new List (); if (!_alreadyLoaded && MetadataArtifactLoader.IsArtifactOfDataSpace(_path, spaceToGet)) { list.Add(_path); } return list; } /// /// Get paths to all artifacts /// ///A List of strings identifying paths to all resources public override ListGetPaths() { List list = new List (); if (!_alreadyLoaded) { list.Add(_path); } return list; } /// /// Create and return an XmlReader around the file represented by this instance. /// ///A List of XmlReaders for all resources public override ListGetReaders(Dictionary sourceDictionary) { List list = new List (); if (!_alreadyLoaded) { XmlReader reader = CreateXmlReader(); list.Add(reader); if (sourceDictionary != null) { sourceDictionary.Add(this, reader); } } return list; } /// /// Create and return an XmlReader around the file represented by this instance /// if it is of the requested DataSpace type. /// /// The DataSpace corresponding to the requested artifacts ///A List of XmlReader objects public override ListCreateReaders(DataSpace spaceToGet) { List list = new List (); if (!_alreadyLoaded && MetadataArtifactLoader.IsArtifactOfDataSpace(_path, spaceToGet)) { XmlReader reader = CreateXmlReader(); list.Add(reader); } return list; } /// /// Create an XmlReader around the artifact file /// ///An XmlReader that wraps a file [ResourceExposure(ResourceScope.None)] //The file path is not passed through to this method so nothing to expose in this method. [ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)] //We are not changing the scope of consumption here private XmlReader CreateXmlReader() { XmlReaderSettings readerSettings = Schema.CreateEdmStandardXmlReaderSettings(); // we know that we aren't reading a fragment readerSettings.ConformanceLevel = ConformanceLevel.Document; return XmlReader.Create(_path, readerSettings); } } } // 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
- RowToFieldTransformer.cs
- webeventbuffer.cs
- TrustManagerPromptUI.cs
- SqlNotificationEventArgs.cs
- PerformanceCounterPermission.cs
- SqlNodeAnnotation.cs
- CompiledWorkflowDefinitionContext.cs
- PlacementWorkspace.cs
- ProfessionalColorTable.cs
- TypeConverterAttribute.cs
- TextTreeTextNode.cs
- SevenBitStream.cs
- RunInstallerAttribute.cs
- SoapIncludeAttribute.cs
- PtsCache.cs
- HandleRef.cs
- VariableValue.cs
- SvcFileManager.cs
- AssemblyAssociatedContentFileAttribute.cs
- Literal.cs
- ProviderConnectionPointCollection.cs
- ListMarkerSourceInfo.cs
- _NTAuthentication.cs
- QueryHandler.cs
- EdmConstants.cs
- SafeHandles.cs
- RSAPKCS1SignatureDeformatter.cs
- SessionEndedEventArgs.cs
- QueryPageSettingsEventArgs.cs
- DefaultAsyncDataDispatcher.cs
- DateTimeSerializationSection.cs
- MsmqPoisonMessageException.cs
- DefaultBinder.cs
- RequiredArgumentAttribute.cs
- PartitionerStatic.cs
- SettingsProviderCollection.cs
- SHA1CryptoServiceProvider.cs
- TextBoxBase.cs
- DescendantQuery.cs
- RadioButtonStandardAdapter.cs
- MimeMapping.cs
- XmlQualifiedName.cs
- Transform3D.cs
- Size3D.cs
- ImplicitInputBrush.cs
- StyleModeStack.cs
- TransactionFlowOption.cs
- QueryResultOp.cs
- SafeNativeMethods.cs
- SoapInteropTypes.cs
- HttpStaticObjectsCollectionBase.cs
- EventMappingSettings.cs
- XmlILTrace.cs
- RemoteCryptoRsaServiceProvider.cs
- FileDataSourceCache.cs
- TextEditorDragDrop.cs
- IdentifierService.cs
- DataControlImageButton.cs
- XmlMapping.cs
- WebScriptClientGenerator.cs
- ConfigurationLocationCollection.cs
- CellPartitioner.cs
- LocationUpdates.cs
- PathData.cs
- DebugView.cs
- Positioning.cs
- EnumMember.cs
- Trigger.cs
- figurelength.cs
- SerializationStore.cs
- Column.cs
- ProgressChangedEventArgs.cs
- SubMenuStyleCollectionEditor.cs
- CorruptingExceptionCommon.cs
- PathFigureCollectionValueSerializer.cs
- DataView.cs
- ApplyTemplatesAction.cs
- RenderOptions.cs
- PkcsUtils.cs
- GlyphingCache.cs
- OdbcConnectionStringbuilder.cs
- InstanceOwnerException.cs
- CustomErrorsSection.cs
- FileDialog.cs
- Matrix.cs
- DynamicValueConverter.cs
- BinHexEncoding.cs
- NullableBoolConverter.cs
- CustomAttributeBuilder.cs
- XNodeNavigator.cs
- StringExpressionSet.cs
- altserialization.cs
- HuffmanTree.cs
- XmlEnumAttribute.cs
- UserInitiatedNavigationPermission.cs
- JavaScriptString.cs
- PaginationProgressEventArgs.cs
- DataFieldConverter.cs
- ComponentDesigner.cs
- ExpressionVisitorHelpers.cs