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
- DescendantOverDescendantQuery.cs
- SafeFindHandle.cs
- FrameworkElementAutomationPeer.cs
- VarRefManager.cs
- XsdDateTime.cs
- MembershipUser.cs
- EventLog.cs
- SoapSchemaExporter.cs
- ListViewCommandEventArgs.cs
- SessionViewState.cs
- HtmlInputImage.cs
- ScrollViewerAutomationPeer.cs
- LongAverageAggregationOperator.cs
- ResourcePermissionBaseEntry.cs
- ContentControl.cs
- ToolStripItemEventArgs.cs
- UpdateRecord.cs
- CodeCompiler.cs
- TypeLoadException.cs
- TraceListener.cs
- DesignerActionVerbList.cs
- HttpWriter.cs
- VersionPair.cs
- HttpCapabilitiesEvaluator.cs
- KoreanLunisolarCalendar.cs
- TextServicesPropertyRanges.cs
- DiagnosticsConfigurationHandler.cs
- Transform3DGroup.cs
- XmlSecureResolver.cs
- VirtualDirectoryMappingCollection.cs
- PackWebRequestFactory.cs
- GrammarBuilderBase.cs
- AppSettingsExpressionBuilder.cs
- CodeObject.cs
- XdrBuilder.cs
- ReadOnlyHierarchicalDataSourceView.cs
- KeyNotFoundException.cs
- DaylightTime.cs
- EdmValidator.cs
- Subtree.cs
- ApplicationBuildProvider.cs
- Connector.cs
- ThreadSafeList.cs
- AttachedAnnotation.cs
- OptimalBreakSession.cs
- FontWeights.cs
- embossbitmapeffect.cs
- RecognizeCompletedEventArgs.cs
- _ServiceNameStore.cs
- PropertyInformation.cs
- ObservableCollection.cs
- ErrorTableItemStyle.cs
- DrawListViewSubItemEventArgs.cs
- HelpKeywordAttribute.cs
- Rotation3D.cs
- DetailsViewPageEventArgs.cs
- HttpSysSettings.cs
- FormViewCommandEventArgs.cs
- _IPv4Address.cs
- PropertyEmitter.cs
- shaperfactoryquerycachekey.cs
- SqlReorderer.cs
- XPathBinder.cs
- QuaternionKeyFrameCollection.cs
- ObjectHandle.cs
- HtmlInputCheckBox.cs
- SerializationStore.cs
- PersianCalendar.cs
- SignatureToken.cs
- XmlIlVisitor.cs
- PersonalizablePropertyEntry.cs
- ReachSerializerAsync.cs
- TcpStreams.cs
- DataSourceSelectArguments.cs
- TransformPatternIdentifiers.cs
- ValueUnavailableException.cs
- PathFigureCollection.cs
- BindingEntityInfo.cs
- PropertyTabAttribute.cs
- OrderedDictionary.cs
- DbInsertCommandTree.cs
- RegexFCD.cs
- HyperLink.cs
- ContentPosition.cs
- ZoneButton.cs
- Vector3DKeyFrameCollection.cs
- SrgsSemanticInterpretationTag.cs
- BitmapSizeOptions.cs
- FindProgressChangedEventArgs.cs
- DocumentScope.cs
- TraceListeners.cs
- SoapMessage.cs
- ObjectItemConventionAssemblyLoader.cs
- unitconverter.cs
- ReferenceEqualityComparer.cs
- TextUtf8RawTextWriter.cs
- WorkflowView.cs
- ToolStripItemRenderEventArgs.cs
- MenuCommands.cs
- DocobjHost.cs