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
- EntitySqlQueryBuilder.cs
- ClientTarget.cs
- SID.cs
- XsdSchemaFileEditor.cs
- DirectoryObjectSecurity.cs
- SignedInfo.cs
- NegotiateStream.cs
- TextDpi.cs
- ProcessModule.cs
- TdsEnums.cs
- UnhandledExceptionEventArgs.cs
- VolatileEnlistmentMultiplexing.cs
- CodeDomExtensionMethods.cs
- DataGridViewLinkColumn.cs
- CodeTypeOfExpression.cs
- PersistenceProvider.cs
- RectAnimationBase.cs
- InteropBitmapSource.cs
- FrameworkContextData.cs
- DataListItem.cs
- cookiecollection.cs
- UseManagedPresentationElement.cs
- StructureChangedEventArgs.cs
- StringToken.cs
- HashHelper.cs
- MatrixConverter.cs
- Tokenizer.cs
- columnmapfactory.cs
- Graphics.cs
- Fonts.cs
- TextEffectResolver.cs
- PeerToPeerException.cs
- ReflectionTypeLoadException.cs
- GestureRecognizer.cs
- AspNetCacheProfileAttribute.cs
- Vector3DAnimationUsingKeyFrames.cs
- SqlRecordBuffer.cs
- ITextView.cs
- WebPartConnectionsEventArgs.cs
- TextSelection.cs
- EventMappingSettingsCollection.cs
- OracleCommandBuilder.cs
- AssemblyResourceLoader.cs
- _Rfc2616CacheValidators.cs
- TextBlockAutomationPeer.cs
- Transform3DGroup.cs
- CompoundFileReference.cs
- Trustee.cs
- WeakReference.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- ImageCodecInfoPrivate.cs
- UnsafeNativeMethodsMilCoreApi.cs
- ContentElement.cs
- DurableServiceAttribute.cs
- InputLanguageEventArgs.cs
- DialogResultConverter.cs
- ObjectContextServiceProvider.cs
- SqlDataSourceStatusEventArgs.cs
- TreeChangeInfo.cs
- PageParserFilter.cs
- XamlDesignerSerializationManager.cs
- PartitionedStream.cs
- UnsafeNetInfoNativeMethods.cs
- NamespaceTable.cs
- WebServiceTypeData.cs
- NumericUpDownAcceleration.cs
- Size3DConverter.cs
- MetadataFile.cs
- Brush.cs
- PerfProviderCollection.cs
- DataGridViewDataConnection.cs
- StateMachineDesignerPaint.cs
- ShaperBuffers.cs
- RecognitionResult.cs
- DataGridViewRowCollection.cs
- WebGetAttribute.cs
- AsyncCodeActivityContext.cs
- GenerateHelper.cs
- QueryOptionExpression.cs
- WebConfigurationManager.cs
- KerberosRequestorSecurityToken.cs
- ErrorsHelper.cs
- BinaryObjectInfo.cs
- PageSetupDialog.cs
- Int16KeyFrameCollection.cs
- Token.cs
- SecurityUtils.cs
- ColorConvertedBitmapExtension.cs
- ComboBoxRenderer.cs
- MeasurementDCInfo.cs
- MobileDeviceCapabilitiesSectionHandler.cs
- ToolStripControlHost.cs
- CharacterBufferReference.cs
- AsynchronousChannel.cs
- DataGridRowHeader.cs
- Timer.cs
- CustomMenuItemCollection.cs
- XmlSchemaComplexType.cs
- SizeAnimationClockResource.cs
- DataGridDesigner.cs