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
- WSAddressing10ProblemHeaderQNameFault.cs
- ChannelManagerHelpers.cs
- GregorianCalendarHelper.cs
- TabletDevice.cs
- Font.cs
- RelativeSource.cs
- UxThemeWrapper.cs
- MarkupCompilePass2.cs
- TriggerCollection.cs
- QueryValue.cs
- Switch.cs
- WithParamAction.cs
- ServiceOperationWrapper.cs
- GridViewRowPresenterBase.cs
- TreeIterators.cs
- MouseButtonEventArgs.cs
- DataPager.cs
- SqlDataSourceStatusEventArgs.cs
- JsonReader.cs
- SubqueryRules.cs
- DataGridViewCellCollection.cs
- LongValidator.cs
- TypeDependencyAttribute.cs
- XmlDataSource.cs
- ThrowHelper.cs
- ConfigXmlSignificantWhitespace.cs
- Quaternion.cs
- ClipboardProcessor.cs
- Boolean.cs
- PartDesigner.cs
- DataServiceCollectionOfT.cs
- GridViewDeleteEventArgs.cs
- CatalogPartCollection.cs
- MethodAccessException.cs
- selecteditemcollection.cs
- DATA_BLOB.cs
- DynamicArgumentDesigner.xaml.cs
- GcHandle.cs
- DynamicMetaObjectBinder.cs
- IntSecurity.cs
- FileRegion.cs
- MobileControlDesigner.cs
- FileChangesMonitor.cs
- RectangleGeometry.cs
- EntityCommandDefinition.cs
- GregorianCalendar.cs
- WCFServiceClientProxyGenerator.cs
- TextRunCacheImp.cs
- SqlLiftWhereClauses.cs
- HScrollProperties.cs
- ArgumentFixer.cs
- CodeMemberField.cs
- BinaryObjectWriter.cs
- WindowsRichEdit.cs
- ComplexTypeEmitter.cs
- UInt32Converter.cs
- oledbmetadatacollectionnames.cs
- FixedSOMTableCell.cs
- WindowsAuthenticationModule.cs
- GeometryConverter.cs
- RootBrowserWindowAutomationPeer.cs
- MeshGeometry3D.cs
- ExtendLockCommand.cs
- WebProxyScriptElement.cs
- TextElementEditingBehaviorAttribute.cs
- NumberFormatInfo.cs
- EventsTab.cs
- DrawingState.cs
- PolyBezierSegmentFigureLogic.cs
- MouseEvent.cs
- MetadataUtilsSmi.cs
- FontFamilyIdentifier.cs
- UnsafeNativeMethods.cs
- BaseAsyncResult.cs
- FamilyTypefaceCollection.cs
- ScriptIgnoreAttribute.cs
- BuildProviderCollection.cs
- DependencyPropertyDescriptor.cs
- smtpconnection.cs
- Journaling.cs
- ListBindableAttribute.cs
- AtomEntry.cs
- GorillaCodec.cs
- CompModSwitches.cs
- WindowsRebar.cs
- Lease.cs
- ConnectionStringsSection.cs
- KeyConstraint.cs
- QueueException.cs
- WebPartZoneBaseDesigner.cs
- FileAuthorizationModule.cs
- AnnotationMap.cs
- MediaPlayer.cs
- DesignTimeSiteMapProvider.cs
- LicenseException.cs
- DoubleUtil.cs
- Helpers.cs
- linebase.cs
- Typography.cs
- HandlerBase.cs