Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Metadata / ObjectLayer / MetadataAssemblyHelper.cs / 1305376 / MetadataAssemblyHelper.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Reflection; using System.Collections.Generic; using System.Diagnostics; using System.Data.Common.Utils; namespace System.Data.Metadata.Edm { internal static class MetadataAssemblyHelper { static byte [] EcmaPublicKeyToken = System.Data.EntityModel.SchemaObjectModel.ScalarType.ConvertToByteArray(AssemblyRef.EcmaPublicKey); static byte [] MsPublicKeyToken = System.Data.EntityModel.SchemaObjectModel.ScalarType.ConvertToByteArray(AssemblyRef.MicrosoftPublicKey); private static Memoizer_filterAssemblyCacheByAssembly = new Memoizer (MetadataAssemblyHelper.ComputeShouldFilterAssembly, EqualityComparer .Default); internal static Assembly SafeLoadReferencedAssembly(AssemblyName assemblyName) { Assembly assembly = null; try { assembly = Assembly.Load(assemblyName); } catch (System.IO.FileNotFoundException) { // See 552932: ObjectItemCollection: fails on referenced assemblies that are not available } return assembly; } private static bool ComputeShouldFilterAssembly(Assembly assembly) { AssemblyName assemblyName = new AssemblyName(assembly.FullName); return ShouldFilterAssembly(assemblyName); } internal static bool ShouldFilterAssembly(Assembly assembly) { return _filterAssemblyCacheByAssembly.Evaluate(assembly); } /// Is the assembly and its referened assemblies not expected to have any metadata private static bool ShouldFilterAssembly(AssemblyName assemblyName) { return (ArePublicKeyTokensEqual(assemblyName.GetPublicKeyToken(), EcmaPublicKeyToken) || ArePublicKeyTokensEqual(assemblyName.GetPublicKeyToken(), MsPublicKeyToken)); } private static bool ArePublicKeyTokensEqual(byte [] left, byte [] right) { // some assemblies don't have public keys if (left.Length != right.Length) { return false; } for (int i = 0; i < left.Length; i++) { if (left[i] != right[i]) { return false; } } return true; } internal static IEnumerableGetNonSystemReferencedAssemblies(Assembly assembly) { foreach (AssemblyName name in assembly.GetReferencedAssemblies()) { if (!ShouldFilterAssembly(name)) { Assembly referenceAssembly = SafeLoadReferencedAssembly(name); if(referenceAssembly != null ) { yield return referenceAssembly; } } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Reflection; using System.Collections.Generic; using System.Diagnostics; using System.Data.Common.Utils; namespace System.Data.Metadata.Edm { internal static class MetadataAssemblyHelper { static byte [] EcmaPublicKeyToken = System.Data.EntityModel.SchemaObjectModel.ScalarType.ConvertToByteArray(AssemblyRef.EcmaPublicKey); static byte [] MsPublicKeyToken = System.Data.EntityModel.SchemaObjectModel.ScalarType.ConvertToByteArray(AssemblyRef.MicrosoftPublicKey); private static Memoizer_filterAssemblyCacheByAssembly = new Memoizer (MetadataAssemblyHelper.ComputeShouldFilterAssembly, EqualityComparer .Default); internal static Assembly SafeLoadReferencedAssembly(AssemblyName assemblyName) { Assembly assembly = null; try { assembly = Assembly.Load(assemblyName); } catch (System.IO.FileNotFoundException) { // See 552932: ObjectItemCollection: fails on referenced assemblies that are not available } return assembly; } private static bool ComputeShouldFilterAssembly(Assembly assembly) { AssemblyName assemblyName = new AssemblyName(assembly.FullName); return ShouldFilterAssembly(assemblyName); } internal static bool ShouldFilterAssembly(Assembly assembly) { return _filterAssemblyCacheByAssembly.Evaluate(assembly); } /// Is the assembly and its referened assemblies not expected to have any metadata private static bool ShouldFilterAssembly(AssemblyName assemblyName) { return (ArePublicKeyTokensEqual(assemblyName.GetPublicKeyToken(), EcmaPublicKeyToken) || ArePublicKeyTokensEqual(assemblyName.GetPublicKeyToken(), MsPublicKeyToken)); } private static bool ArePublicKeyTokensEqual(byte [] left, byte [] right) { // some assemblies don't have public keys if (left.Length != right.Length) { return false; } for (int i = 0; i < left.Length; i++) { if (left[i] != right[i]) { return false; } } return true; } internal static IEnumerableGetNonSystemReferencedAssemblies(Assembly assembly) { foreach (AssemblyName name in assembly.GetReferencedAssemblies()) { if (!ShouldFilterAssembly(name)) { Assembly referenceAssembly = SafeLoadReferencedAssembly(name); if(referenceAssembly != null ) { yield return referenceAssembly; } } } } } } // 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
- TraceContextEventArgs.cs
- ConstructorNeedsTagAttribute.cs
- ObjectItemConventionAssemblyLoader.cs
- DataGridItemEventArgs.cs
- CustomCategoryAttribute.cs
- EvidenceBase.cs
- ListBindingHelper.cs
- CompilationRelaxations.cs
- FormViewDeleteEventArgs.cs
- SelectionProcessor.cs
- PrimarySelectionGlyph.cs
- MDIClient.cs
- PriorityItem.cs
- DesignerCatalogPartChrome.cs
- NameTable.cs
- UpDownEvent.cs
- CreateUserWizard.cs
- QueryContinueDragEvent.cs
- TextServicesPropertyRanges.cs
- CustomTypeDescriptor.cs
- Int64Animation.cs
- HTMLTagNameToTypeMapper.cs
- XPathBinder.cs
- CompoundFileStorageReference.cs
- ResponseStream.cs
- ClientSideProviderDescription.cs
- DataGridSortingEventArgs.cs
- Blend.cs
- HasActivatableWorkflowEvent.cs
- CompleteWizardStep.cs
- Normalization.cs
- IERequestCache.cs
- VoiceChangeEventArgs.cs
- SmtpFailedRecipientException.cs
- MsmqIntegrationProcessProtocolHandler.cs
- QuotedPrintableStream.cs
- OleDbDataReader.cs
- CustomGrammar.cs
- ToolStripPanelCell.cs
- DocumentSequenceHighlightLayer.cs
- OdbcTransaction.cs
- WebPartTracker.cs
- ArcSegment.cs
- UInt64.cs
- Attachment.cs
- NegotiateStream.cs
- FormsAuthenticationModule.cs
- AssemblyHash.cs
- ConstantSlot.cs
- QuinticEase.cs
- Timer.cs
- COMException.cs
- BoolLiteral.cs
- AutoResetEvent.cs
- LoginDesignerUtil.cs
- DomainConstraint.cs
- ThreadSafeMessageFilterTable.cs
- RestHandler.cs
- DbCommandTree.cs
- OracleDateTime.cs
- DbSetClause.cs
- InvalidAsynchronousStateException.cs
- XamlWriter.cs
- AudioException.cs
- DataListGeneralPage.cs
- BasicExpressionVisitor.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- LogAppendAsyncResult.cs
- WindowsListViewItem.cs
- DataControlImageButton.cs
- MediaTimeline.cs
- SettingsPropertyCollection.cs
- PanelDesigner.cs
- PropertyDescriptorGridEntry.cs
- FileSecurity.cs
- TabItem.cs
- PopOutPanel.cs
- XhtmlConformanceSection.cs
- StringSource.cs
- BinaryReader.cs
- GridViewDeleteEventArgs.cs
- configsystem.cs
- WaitHandle.cs
- ActivationProxy.cs
- Encoding.cs
- SafeBitVector32.cs
- Assert.cs
- TargetParameterCountException.cs
- ExpandSegment.cs
- DodSequenceMerge.cs
- SqlDataReader.cs
- Attributes.cs
- CatalogPartCollection.cs
- ErrorProvider.cs
- ProcessModelInfo.cs
- formatter.cs
- XmlSerializationReader.cs
- TagNameToTypeMapper.cs
- Metafile.cs
- ExternalDataExchangeClient.cs