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
- RPIdentityRequirement.cs
- LineMetrics.cs
- RuleValidation.cs
- DataGridViewColumnStateChangedEventArgs.cs
- QilTargetType.cs
- StorageAssociationTypeMapping.cs
- DoWorkEventArgs.cs
- HttpCachePolicyBase.cs
- MetadataItemSerializer.cs
- ResourcePermissionBaseEntry.cs
- FieldReference.cs
- PerformanceCounterPermission.cs
- SmtpTransport.cs
- WindowsListViewGroupHelper.cs
- GeneratedCodeAttribute.cs
- RegexFCD.cs
- MimeWriter.cs
- ReadOnlyDictionary.cs
- DefaultWorkflowLoaderService.cs
- MsmqAppDomainProtocolHandler.cs
- CryptoConfig.cs
- PkcsMisc.cs
- DataServiceBehavior.cs
- TransactionManager.cs
- TrackingDataItemValue.cs
- ListViewUpdatedEventArgs.cs
- DataObjectPastingEventArgs.cs
- XmlObjectSerializerContext.cs
- OdbcConnectionOpen.cs
- ChooseAction.cs
- CodeDomSerializerException.cs
- ValidateNames.cs
- MachineKeySection.cs
- UserPersonalizationStateInfo.cs
- ErrorItem.cs
- cookie.cs
- DataGridColumn.cs
- UserNameSecurityTokenAuthenticator.cs
- GetPageCompletedEventArgs.cs
- SortedList.cs
- ImageListUtils.cs
- EpmContentDeSerializer.cs
- DataTemplateKey.cs
- TextElementAutomationPeer.cs
- xsdvalidator.cs
- FormViewUpdatedEventArgs.cs
- DataGridViewUtilities.cs
- APCustomTypeDescriptor.cs
- TextCompositionEventArgs.cs
- ScriptingRoleServiceSection.cs
- XmlSchemaAnnotated.cs
- ProfessionalColorTable.cs
- EdgeModeValidation.cs
- SelectionPatternIdentifiers.cs
- MappedMetaModel.cs
- GACMembershipCondition.cs
- wmiprovider.cs
- DefaultTraceListener.cs
- CodeStatementCollection.cs
- PropertyGridEditorPart.cs
- Typography.cs
- GridSplitter.cs
- SingleSelectRootGridEntry.cs
- StylusPointProperties.cs
- ChangePassword.cs
- ToolStripItem.cs
- TypedTableBase.cs
- ContainerActivationHelper.cs
- StrokeNodeEnumerator.cs
- RectangleGeometry.cs
- ClientTargetCollection.cs
- XamlSerializerUtil.cs
- UnauthorizedAccessException.cs
- Speller.cs
- input.cs
- MetadataSerializer.cs
- WmiPutTraceRecord.cs
- HttpRequest.cs
- ServicePointManager.cs
- FlatButtonAppearance.cs
- TextSimpleMarkerProperties.cs
- ControlType.cs
- DateTime.cs
- Calendar.cs
- GridEntry.cs
- Int16AnimationBase.cs
- ParameterBinding.cs
- Stack.cs
- ZipArchive.cs
- Calendar.cs
- TextPenaltyModule.cs
- DnsElement.cs
- CookielessHelper.cs
- HttpProfileBase.cs
- Pts.cs
- InternalUserCancelledException.cs
- SerializationAttributes.cs
- ServiceModelExtensionCollectionElement.cs
- BamlReader.cs
- BrushValueSerializer.cs