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
- DefaultPropertyAttribute.cs
- ReadWriteObjectLock.cs
- QilXmlWriter.cs
- AppDomainAttributes.cs
- MenuItemAutomationPeer.cs
- ButtonStandardAdapter.cs
- DBBindings.cs
- SHA256.cs
- AbandonedMutexException.cs
- IxmlLineInfo.cs
- DurableEnlistmentState.cs
- StorageSetMapping.cs
- SqlIdentifier.cs
- MemberCollection.cs
- SQLMoneyStorage.cs
- CommandPlan.cs
- FactoryRecord.cs
- TypedTableGenerator.cs
- DummyDataSource.cs
- ToolboxItemImageConverter.cs
- MethodBody.cs
- ConnectionOrientedTransportChannelFactory.cs
- HtmlForm.cs
- GestureRecognitionResult.cs
- EmbossBitmapEffect.cs
- Rotation3D.cs
- XslException.cs
- InputDevice.cs
- MaterialCollection.cs
- DocumentApplicationState.cs
- HostExecutionContextManager.cs
- SqlCommandSet.cs
- WasAdminWrapper.cs
- LinkDescriptor.cs
- IFlowDocumentViewer.cs
- SetStoryboardSpeedRatio.cs
- ContextStack.cs
- newinstructionaction.cs
- Converter.cs
- LogicalTreeHelper.cs
- GetCertificateRequest.cs
- SoapIncludeAttribute.cs
- SqlDesignerDataSourceView.cs
- Operator.cs
- SqlBuilder.cs
- DocumentXPathNavigator.cs
- ViewLoader.cs
- DataGridColumnFloatingHeader.cs
- XmlValidatingReaderImpl.cs
- UnmanagedMarshal.cs
- Exception.cs
- DragDeltaEventArgs.cs
- IconHelper.cs
- WebServiceMethodData.cs
- AutoResizedEvent.cs
- AmbiguousMatchException.cs
- CollectionDataContract.cs
- SecurityPolicySection.cs
- SqlCacheDependencyDatabaseCollection.cs
- Run.cs
- StatusBarPanel.cs
- NamespaceExpr.cs
- MessageRpc.cs
- SequenceQuery.cs
- KeyInfo.cs
- DebugTrace.cs
- ImageSourceConverter.cs
- TextDpi.cs
- CacheEntry.cs
- SslSecurityTokenParameters.cs
- DllNotFoundException.cs
- AssertFilter.cs
- SqlAliaser.cs
- CollectionEditorDialog.cs
- XmlUtil.cs
- Range.cs
- COM2PictureConverter.cs
- ValueChangedEventManager.cs
- OutputScopeManager.cs
- FormatConvertedBitmap.cs
- SqlClientWrapperSmiStreamChars.cs
- ComponentChangingEvent.cs
- cookiecollection.cs
- SQLDecimal.cs
- _HTTPDateParse.cs
- NamedPermissionSet.cs
- XmlCharCheckingReader.cs
- WebServiceParameterData.cs
- SchemaConstraints.cs
- XmlQualifiedName.cs
- InstanceCreationEditor.cs
- BigInt.cs
- HttpListenerRequest.cs
- DispatcherTimer.cs
- TreeNode.cs
- WMIGenerator.cs
- StackOverflowException.cs
- CalendarDay.cs
- FontFamily.cs
- HostedElements.cs