Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Metadata / ObjectLayer / KnownAssembliesSet.cs / 1305376 / KnownAssembliesSet.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Linq; using System.Reflection; using System.Collections.Generic; using System.Diagnostics; namespace System.Data.Metadata.Edm { ////// This class is responsible for keeping track of which assemblies we have already /// considered so we don't reconsider them again. /// /// The current rules for an assembly to be "seen" is /// 1. It is already in our dictionary /// AND /// 1. We are in attribute loading mode /// OR /// 2. We have seen it already with a non null EdmItemCollection /// OR /// 3. We are seeing it with a null EdmItemCollection this time /// internal class KnownAssembliesSet { private Dictionary_assemblies; internal KnownAssembliesSet() { _assemblies = new Dictionary (); } internal KnownAssembliesSet(KnownAssembliesSet set) { _assemblies = new Dictionary (set._assemblies); } internal bool TryGetKnownAssembly(Assembly assembly, object loaderCookie, EdmItemCollection itemCollection, out KnownAssemblyEntry entry) { if (!_assemblies.TryGetValue(assembly, out entry)) { return false; } if (!entry.HaveSeenInCompatibleContext(loaderCookie, itemCollection)) { return false; } return true; } internal IEnumerable Assemblies { get { return _assemblies.Keys; } } public IEnumerable GetEntries(object loaderCookie, EdmItemCollection itemCollection) { return _assemblies.Values.Where(e => e.HaveSeenInCompatibleContext(loaderCookie, itemCollection)); } internal bool Contains(Assembly assembly, object loaderCookie, EdmItemCollection itemCollection) { KnownAssemblyEntry entry; return TryGetKnownAssembly(assembly, loaderCookie, itemCollection, out entry); } internal void Add(Assembly assembly, KnownAssemblyEntry knownAssemblyEntry) { KnownAssemblyEntry current; if (_assemblies.TryGetValue(assembly, out current)) { Debug.Assert(current.SeenWithEdmItemCollection != knownAssemblyEntry.SeenWithEdmItemCollection && knownAssemblyEntry.SeenWithEdmItemCollection, "should only be updating if we haven't seen it with an edmItemCollection yet."); _assemblies[assembly] = knownAssemblyEntry; } else { _assemblies.Add(assembly, knownAssemblyEntry); } } } } // 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
- SponsorHelper.cs
- CacheOutputQuery.cs
- AlgoModule.cs
- DesignTimeTemplateParser.cs
- FormViewUpdateEventArgs.cs
- VisualTreeUtils.cs
- DataPager.cs
- Dump.cs
- CheckBoxRenderer.cs
- QueryRewriter.cs
- HttpHeaderCollection.cs
- ListParaClient.cs
- EdmRelationshipRoleAttribute.cs
- QuaternionRotation3D.cs
- PingOptions.cs
- ConditionalAttribute.cs
- TypeBuilder.cs
- AsyncStreamReader.cs
- GenericRootAutomationPeer.cs
- CompoundFileReference.cs
- TransformCryptoHandle.cs
- TextComposition.cs
- ResourceManager.cs
- WebPart.cs
- LocalValueEnumerator.cs
- ACE.cs
- AppDomainCompilerProxy.cs
- ManagementObjectCollection.cs
- TextEditorThreadLocalStore.cs
- Converter.cs
- ThreadSafeMessageFilterTable.cs
- ConnectionString.cs
- AnnouncementEndpointElement.cs
- HtmlSelect.cs
- RtType.cs
- SafeUserTokenHandle.cs
- XmlnsPrefixAttribute.cs
- TreeViewDataItemAutomationPeer.cs
- HttpListenerRequest.cs
- RegisteredScript.cs
- RemotingConfigParser.cs
- DesignerMetadata.cs
- CompilerError.cs
- CommunicationObjectManager.cs
- EmbossBitmapEffect.cs
- PersonalizationStateQuery.cs
- BufferBuilder.cs
- HwndTarget.cs
- SpotLight.cs
- WebPartDescription.cs
- DataFormats.cs
- ExpressionBuilderCollection.cs
- ContentType.cs
- OrderPreservingPipeliningSpoolingTask.cs
- UrlMappingsSection.cs
- List.cs
- DelegatingConfigHost.cs
- Attributes.cs
- EditingCommands.cs
- GridViewColumnCollection.cs
- UnsafeNativeMethods.cs
- TaiwanLunisolarCalendar.cs
- HtmlSelect.cs
- EntityKeyElement.cs
- RegionData.cs
- MenuCommands.cs
- AssociatedControlConverter.cs
- EncryptedData.cs
- XPathNodeInfoAtom.cs
- LZCodec.cs
- HttpHandlerAction.cs
- ApplicationServicesHostFactory.cs
- UInt64Storage.cs
- TailPinnedEventArgs.cs
- QueryResponse.cs
- WebPartManagerInternals.cs
- Cursor.cs
- EventSinkActivityDesigner.cs
- TextEvent.cs
- PointUtil.cs
- SelectionService.cs
- SQLStringStorage.cs
- AttributeConverter.cs
- EncoderExceptionFallback.cs
- PageContent.cs
- CaseStatement.cs
- PageParserFilter.cs
- XmlTextReaderImpl.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- WindowsListBox.cs
- Soap.cs
- SiteMapHierarchicalDataSourceView.cs
- HttpClientCertificate.cs
- CompensatableSequenceActivity.cs
- Knowncolors.cs
- SelectorItemAutomationPeer.cs
- WindowsRebar.cs
- SoapWriter.cs
- ThreadStateException.cs
- DateRangeEvent.cs