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
- IIS7WorkerRequest.cs
- HMACSHA1.cs
- CustomTypeDescriptor.cs
- ViewStateException.cs
- DXD.cs
- String.cs
- WsatTransactionInfo.cs
- CodeMethodInvokeExpression.cs
- UrlMappingsModule.cs
- AttributeUsageAttribute.cs
- ModelItemDictionary.cs
- StdValidatorsAndConverters.cs
- ValidationError.cs
- GiveFeedbackEventArgs.cs
- Model3DGroup.cs
- SingleAnimationUsingKeyFrames.cs
- MemberBinding.cs
- StackSpiller.Bindings.cs
- WebServiceResponse.cs
- LoginViewDesigner.cs
- ServiceDescriptionSerializer.cs
- TypeBuilder.cs
- PeerContact.cs
- SerializationHelper.cs
- SelectorAutomationPeer.cs
- TreeNode.cs
- PermissionToken.cs
- ApplicationSecurityManager.cs
- PageCache.cs
- OLEDB_Util.cs
- XmlnsDefinitionAttribute.cs
- PeerNameRecord.cs
- ChannelManagerService.cs
- TreeView.cs
- RegionIterator.cs
- InstanceDataCollection.cs
- MetadataItemEmitter.cs
- RootProfilePropertySettingsCollection.cs
- Configuration.cs
- ObjectDataSourceDesigner.cs
- MD5.cs
- PenLineCapValidation.cs
- QueryTaskGroupState.cs
- TransformGroup.cs
- TabPage.cs
- Exceptions.cs
- WorkItem.cs
- LassoSelectionBehavior.cs
- OrthographicCamera.cs
- DataErrorValidationRule.cs
- DashStyles.cs
- ClientScriptManagerWrapper.cs
- DefaultSection.cs
- ControlAdapter.cs
- Renderer.cs
- NativeMethods.cs
- DefaultPrintController.cs
- ActivityMarkupSerializer.cs
- DefaultTextStore.cs
- Attachment.cs
- QilFunction.cs
- OutputWindow.cs
- GridViewColumnHeaderAutomationPeer.cs
- ColumnCollection.cs
- SelectionHighlightInfo.cs
- DocumentApplication.cs
- SolidColorBrush.cs
- TextElementEnumerator.cs
- DbModificationCommandTree.cs
- ClosableStream.cs
- WpfXamlMember.cs
- FileChangesMonitor.cs
- RtfFormatStack.cs
- GeneratedView.cs
- HttpErrorTraceRecord.cs
- Condition.cs
- TextSearch.cs
- SqlInternalConnection.cs
- ActivityMarkupSerializer.cs
- ObjectAssociationEndMapping.cs
- BinaryConverter.cs
- UrlMappingsSection.cs
- CssClassPropertyAttribute.cs
- ToolBarButton.cs
- _OverlappedAsyncResult.cs
- PrintDocument.cs
- PiiTraceSource.cs
- GenericTransactionFlowAttribute.cs
- InputBinder.cs
- ToolStripProgressBar.cs
- XmlElementList.cs
- ActivityExecutionContextCollection.cs
- TypographyProperties.cs
- EntityChangedParams.cs
- XmlSerializationReader.cs
- EventLogTraceListener.cs
- OciEnlistContext.cs
- PermissionAttributes.cs
- TypeInformation.cs
- AttributeUsageAttribute.cs