Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------------- // // 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
- NativeMethods.cs
- PersonalizationStateQuery.cs
- TemplateControlParser.cs
- DetailsViewDeletedEventArgs.cs
- FixUpCollection.cs
- XomlSerializationHelpers.cs
- SafeTokenHandle.cs
- DataTableTypeConverter.cs
- FacetValueContainer.cs
- Keywords.cs
- AppDomainShutdownMonitor.cs
- ErrorHandler.cs
- TextEditorParagraphs.cs
- DropAnimation.xaml.cs
- UnsafeNativeMethods.cs
- ProfessionalColors.cs
- TextParagraphProperties.cs
- AssemblyNameProxy.cs
- ExceptionUtil.cs
- HttpChannelBindingToken.cs
- CopyOfAction.cs
- FaultPropagationRecord.cs
- DataGridLength.cs
- OdbcStatementHandle.cs
- PrintControllerWithStatusDialog.cs
- RadioButtonPopupAdapter.cs
- UriTemplateDispatchFormatter.cs
- ProfileSettings.cs
- DmlSqlGenerator.cs
- ConditionCollection.cs
- ProfilePropertyNameValidator.cs
- Queue.cs
- ProxyGenerator.cs
- ComboBoxAutomationPeer.cs
- MetroSerializationManager.cs
- TableLayoutSettings.cs
- Module.cs
- WindowsRegion.cs
- OleDbWrapper.cs
- PngBitmapEncoder.cs
- ObjectCacheHost.cs
- DataControlField.cs
- SiteMembershipCondition.cs
- DiagnosticTraceSource.cs
- XmlWriter.cs
- LinkedDataMemberFieldEditor.cs
- DocumentPaginator.cs
- ResolvePPIDRequest.cs
- NativeConfigurationLoader.cs
- MSG.cs
- SqlCacheDependencyDatabase.cs
- BitmapPalettes.cs
- SecurityResources.cs
- PkcsUtils.cs
- AccessText.cs
- InputProviderSite.cs
- KnownBoxes.cs
- ServiceOperation.cs
- TextEncodedRawTextWriter.cs
- LineBreakRecord.cs
- TcpClientCredentialType.cs
- SpotLight.cs
- XmlCharCheckingReader.cs
- ProfilePropertySettings.cs
- HyperLink.cs
- NumericUpDownAcceleration.cs
- EntityContainerAssociationSet.cs
- XmlProcessingInstruction.cs
- DirectionalLight.cs
- PriorityChain.cs
- InkPresenterAutomationPeer.cs
- ProxyGenerator.cs
- LinkClickEvent.cs
- XpsFontSubsetter.cs
- JsonReaderDelegator.cs
- KeyTime.cs
- _ScatterGatherBuffers.cs
- XmlHierarchicalEnumerable.cs
- AxisAngleRotation3D.cs
- AvTraceFormat.cs
- GroupBox.cs
- WpfXamlLoader.cs
- SessionStateSection.cs
- BaseInfoTable.cs
- ZoneButton.cs
- PartitionResolver.cs
- LocatorBase.cs
- SessionEndedEventArgs.cs
- HttpGetProtocolReflector.cs
- KeyValuePairs.cs
- AppSettingsSection.cs
- RectAnimationUsingKeyFrames.cs
- Converter.cs
- XhtmlBasicPageAdapter.cs
- QueryRewriter.cs
- COM2ExtendedTypeConverter.cs
- TrackingMemoryStream.cs
- CodeGen.cs
- IgnoreFlushAndCloseStream.cs
- XmlTextEncoder.cs