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
- ActivitySurrogate.cs
- MethodImplAttribute.cs
- HtmlForm.cs
- CorePropertiesFilter.cs
- TextContainerChangeEventArgs.cs
- UniformGrid.cs
- ValidatedControlConverter.cs
- DesignerDataConnection.cs
- BindingExpression.cs
- OleDbMetaDataFactory.cs
- NameValueConfigurationCollection.cs
- UnicastIPAddressInformationCollection.cs
- CloseCollectionAsyncResult.cs
- AutomationAttributeInfo.cs
- Listbox.cs
- ConfigurationSectionGroupCollection.cs
- BulletedListDesigner.cs
- StreamSecurityUpgradeAcceptor.cs
- WorkflowInstanceProxy.cs
- CodeTypeReferenceSerializer.cs
- DaylightTime.cs
- Scalars.cs
- ActivityScheduledRecord.cs
- Fx.cs
- AuthenticationManager.cs
- StaticExtension.cs
- ListChangedEventArgs.cs
- TreePrinter.cs
- ToolStripLocationCancelEventArgs.cs
- Content.cs
- ButtonBaseAdapter.cs
- FontNameEditor.cs
- SamlAdvice.cs
- OneOfConst.cs
- MultiSelector.cs
- XmlSchemaProviderAttribute.cs
- XD.cs
- PolyLineSegment.cs
- SettingsProperty.cs
- ContainsRowNumberChecker.cs
- X509CertificateCollection.cs
- ChangeTracker.cs
- XmlMembersMapping.cs
- XmlMapping.cs
- SqlRowUpdatingEvent.cs
- GrowingArray.cs
- HandlerBase.cs
- ValidatingPropertiesEventArgs.cs
- DescriptionAttribute.cs
- ExpandSegmentCollection.cs
- sqlnorm.cs
- ToolStripSeparatorRenderEventArgs.cs
- RewritingProcessor.cs
- CellNormalizer.cs
- WebBrowserPermission.cs
- WebPartMovingEventArgs.cs
- AppAction.cs
- _ConnectStream.cs
- Win32.cs
- TextParaClient.cs
- ApplicationBuildProvider.cs
- WebPartExportVerb.cs
- DefaultWorkflowSchedulerService.cs
- ConversionContext.cs
- TextSelectionProcessor.cs
- PropertyTab.cs
- MoveSizeWinEventHandler.cs
- RelationshipEnd.cs
- PieceDirectory.cs
- SafePointer.cs
- ServiceHostingEnvironment.cs
- XmlTextAttribute.cs
- ActivityExecutorDelegateInfo.cs
- __TransparentProxy.cs
- XmlSchemaAttributeGroupRef.cs
- DoubleLink.cs
- VariableAction.cs
- WebServiceFault.cs
- Compiler.cs
- WebPartConnectionCollection.cs
- _NestedMultipleAsyncResult.cs
- Resources.Designer.cs
- SiteMapHierarchicalDataSourceView.cs
- WebSysDisplayNameAttribute.cs
- TemplatedWizardStep.cs
- _CacheStreams.cs
- StylusPointDescription.cs
- IItemProperties.cs
- StreamInfo.cs
- DefaultTextStoreTextComposition.cs
- CodeTypeDeclarationCollection.cs
- TraceHwndHost.cs
- DataGridAutoFormat.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- PrintDialogException.cs
- FrameworkContextData.cs
- UnsignedPublishLicense.cs
- IResourceProvider.cs
- DataSourceControlBuilder.cs
- Point3D.cs