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
- XmlHierarchyData.cs
- ConfigXmlDocument.cs
- ContainerFilterService.cs
- StandardBindingImporter.cs
- CreateParams.cs
- FieldNameLookup.cs
- StrongName.cs
- TemplateControlParser.cs
- GridPatternIdentifiers.cs
- ExceptionNotification.cs
- EntityDataSourceMemberPath.cs
- PenLineCapValidation.cs
- COM2TypeInfoProcessor.cs
- ProfileGroupSettingsCollection.cs
- WebServiceHost.cs
- SystemEvents.cs
- RSAPKCS1SignatureFormatter.cs
- GeneralTransform3DTo2D.cs
- WindowsTooltip.cs
- RowParagraph.cs
- EnumType.cs
- XmlEntity.cs
- DecimalKeyFrameCollection.cs
- CounterCreationDataCollection.cs
- InstanceKey.cs
- EmissiveMaterial.cs
- DayRenderEvent.cs
- WebHostUnsafeNativeMethods.cs
- DesignerCommandAdapter.cs
- InputScopeNameConverter.cs
- StateInitializationDesigner.cs
- DesignerValidationSummaryAdapter.cs
- SystemIPv6InterfaceProperties.cs
- SettingsAttributes.cs
- SafeRightsManagementPubHandle.cs
- Matrix3DStack.cs
- BindingValueChangedEventArgs.cs
- HttpResponseInternalWrapper.cs
- ClickablePoint.cs
- WindowsToolbarAsMenu.cs
- ClientScriptManager.cs
- AstTree.cs
- CreateUserWizard.cs
- StringUtil.cs
- WrapperEqualityComparer.cs
- Model3DGroup.cs
- HelloOperationAsyncResult.cs
- HtmlTable.cs
- ConfigPathUtility.cs
- MemberHolder.cs
- XamlSerializerUtil.cs
- DataGridViewCellValidatingEventArgs.cs
- RegularExpressionValidator.cs
- StringResourceManager.cs
- EnumerableValidator.cs
- BasicHttpBindingElement.cs
- GridView.cs
- TextAction.cs
- Stopwatch.cs
- Crypto.cs
- MetadataException.cs
- VisualProxy.cs
- WsatServiceAddress.cs
- EntityDataSourceView.cs
- WebEventTraceProvider.cs
- PropVariant.cs
- PeerNameRegistration.cs
- ListControl.cs
- EventNotify.cs
- mediapermission.cs
- AggregateNode.cs
- TableLayoutPanel.cs
- ArgumentsParser.cs
- XmlSchemaInferenceException.cs
- TrustManagerPromptUI.cs
- ActiveXHost.cs
- LinqDataSourceContextEventArgs.cs
- ObjectDataSourceSelectingEventArgs.cs
- DesignerSerializerAttribute.cs
- MessageDecoder.cs
- SchemaTableColumn.cs
- ImageDrawing.cs
- SequentialOutput.cs
- ModifierKeysValueSerializer.cs
- HMACSHA256.cs
- RubberbandSelector.cs
- PersonalizationStateQuery.cs
- ZipPackage.cs
- BasicViewGenerator.cs
- Clause.cs
- InputEventArgs.cs
- TextWriterEngine.cs
- SafePointer.cs
- Filter.cs
- InheritablePropertyChangeInfo.cs
- DbException.cs
- OleDbFactory.cs
- FontInfo.cs
- AbandonedMutexException.cs
- OleDbStruct.cs