Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AstTree.cs
- FlagsAttribute.cs
- EntryPointNotFoundException.cs
- IsolatedStorage.cs
- SponsorHelper.cs
- HierarchicalDataBoundControlAdapter.cs
- ToolStripOverflow.cs
- SourceFilter.cs
- DesignerActionGlyph.cs
- XmlSchemaComplexContentRestriction.cs
- VectorCollectionConverter.cs
- TreeViewBindingsEditorForm.cs
- SerializerDescriptor.cs
- OperationResponse.cs
- CheckBoxStandardAdapter.cs
- ClickablePoint.cs
- BmpBitmapEncoder.cs
- SynchronizedDispatch.cs
- SerializationStore.cs
- XmlWellformedWriter.cs
- NativeMethods.cs
- FloatUtil.cs
- Simplifier.cs
- DataPager.cs
- PageSetupDialog.cs
- CharConverter.cs
- WaitForChangedResult.cs
- ProgressPage.cs
- FileClassifier.cs
- EdmScalarPropertyAttribute.cs
- IRCollection.cs
- X509Chain.cs
- CacheEntry.cs
- WMIGenerator.cs
- Graphics.cs
- WindowsGraphics.cs
- PerfCounters.cs
- TextContainer.cs
- InvalidCastException.cs
- PersonalizationProviderCollection.cs
- Attributes.cs
- XmlnsCache.cs
- MSAANativeProvider.cs
- AppDomainFactory.cs
- IgnoreDeviceFilterElement.cs
- Activator.cs
- WindowShowOrOpenTracker.cs
- DetailsViewCommandEventArgs.cs
- XmlMapping.cs
- XmlTextReaderImplHelpers.cs
- ScrollProperties.cs
- ColumnMap.cs
- DataRow.cs
- ActivationArguments.cs
- RequestUriProcessor.cs
- CompositeActivityCodeGenerator.cs
- PtsPage.cs
- ControlIdConverter.cs
- LinkedResourceCollection.cs
- CalendarAutoFormatDialog.cs
- AnonymousIdentificationModule.cs
- DataGridColumnStyleMappingNameEditor.cs
- NodeFunctions.cs
- JavaScriptString.cs
- JournalNavigationScope.cs
- InvokePatternIdentifiers.cs
- GlyphRunDrawing.cs
- PermissionSetTriple.cs
- DataGridRowAutomationPeer.cs
- DurationConverter.cs
- ProtocolViolationException.cs
- XmlSchemaDocumentation.cs
- objectquery_tresulttype.cs
- CodeIterationStatement.cs
- Constraint.cs
- DetailsView.cs
- Geometry3D.cs
- SqlBulkCopyColumnMappingCollection.cs
- SimpleHandlerFactory.cs
- XmlRawWriter.cs
- NamedPipeTransportElement.cs
- XmlText.cs
- PageAsyncTaskManager.cs
- ProcessManager.cs
- FormatConvertedBitmap.cs
- PanelDesigner.cs
- PreloadedPackages.cs
- FrameworkContentElement.cs
- glyphs.cs
- CompilerWrapper.cs
- BitmapDecoder.cs
- EntityContainerAssociationSet.cs
- Ipv6Element.cs
- ByteFacetDescriptionElement.cs
- WindowsGraphics2.cs
- DerivedKeySecurityToken.cs
- RootDesignerSerializerAttribute.cs
- ViewGenResults.cs
- ScriptingJsonSerializationSection.cs
- WriteLineDesigner.xaml.cs