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
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- DynamicPropertyHolder.cs
- ProxyAttribute.cs
- BitmapDownload.cs
- VerificationException.cs
- xmlglyphRunInfo.cs
- DefaultSection.cs
- DetailsViewInsertEventArgs.cs
- OnOperation.cs
- SqlDataSourceView.cs
- ExceptionHandler.cs
- ListView.cs
- SamlAdvice.cs
- DocumentGrid.cs
- ByteStack.cs
- ItemsPanelTemplate.cs
- MultiDataTrigger.cs
- MetaModel.cs
- XsdBuilder.cs
- AuthenticationSection.cs
- RandomNumberGenerator.cs
- DataControlButton.cs
- SecurityException.cs
- ModifyActivitiesPropertyDescriptor.cs
- OrderingQueryOperator.cs
- CustomAttributeBuilder.cs
- SystemSounds.cs
- LinqDataSourceHelper.cs
- DurableInstanceProvider.cs
- ToolStripDesignerUtils.cs
- HtmlShimManager.cs
- InnerItemCollectionView.cs
- EventSourceCreationData.cs
- DataViewManagerListItemTypeDescriptor.cs
- IfAction.cs
- RemotingConfigParser.cs
- OdbcParameterCollection.cs
- XmlSortKeyAccumulator.cs
- DiscoveryExceptionDictionary.cs
- Single.cs
- TargetConverter.cs
- HashSetEqualityComparer.cs
- DetailsViewInsertedEventArgs.cs
- Vector.cs
- DbConvert.cs
- TextDecoration.cs
- ResourceContainerWrapper.cs
- DataGridHeaderBorder.cs
- Vector3DCollection.cs
- BindingManagerDataErrorEventArgs.cs
- MenuAutomationPeer.cs
- MDIClient.cs
- NumericUpDownAccelerationCollection.cs
- ApplyHostConfigurationBehavior.cs
- AttributeEmitter.cs
- RouteParser.cs
- TextViewBase.cs
- FormsAuthenticationTicket.cs
- EdmItemError.cs
- ObjectPropertyMapping.cs
- CodePageEncoding.cs
- StreamWriter.cs
- AuthenticationModuleElementCollection.cs
- AssertValidation.cs
- HttpListenerRequestTraceRecord.cs
- Object.cs
- EncryptedKeyHashIdentifierClause.cs
- SQLDateTimeStorage.cs
- HttpRequestTraceRecord.cs
- XpsFontSerializationService.cs
- basenumberconverter.cs
- Reference.cs
- HelpHtmlBuilder.cs
- PropertyChangeTracker.cs
- SchemaImporterExtension.cs
- InputLangChangeEvent.cs
- DesignOnlyAttribute.cs
- WebPartZoneCollection.cs
- CodeEntryPointMethod.cs
- Timer.cs
- OutputCacheSettings.cs
- RangeBase.cs
- ValidationEventArgs.cs
- DataRowCollection.cs
- Registry.cs
- ConfigXmlComment.cs
- NamespaceInfo.cs
- BitHelper.cs
- CanonicalFontFamilyReference.cs
- IISUnsafeMethods.cs
- CodeEntryPointMethod.cs
- PenContexts.cs
- ProviderSettings.cs
- RunClient.cs
- ObjectPersistData.cs
- GlobalItem.cs
- StylusCollection.cs
- CharacterBufferReference.cs
- SpeakInfo.cs
- DataGridViewRow.cs