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
- ResourceBinder.cs
- DesignerForm.cs
- ParameterBuilder.cs
- Psha1DerivedKeyGenerator.cs
- InputLanguageCollection.cs
- ReliabilityContractAttribute.cs
- GcHandle.cs
- TTSEvent.cs
- GlyphingCache.cs
- NativeMethods.cs
- InputBindingCollection.cs
- RuleSettings.cs
- EventWaitHandleSecurity.cs
- EmptyTextWriter.cs
- SystemInformation.cs
- Content.cs
- MailAddressCollection.cs
- TableParagraph.cs
- NetTcpBindingElement.cs
- StateWorkerRequest.cs
- MeshGeometry3D.cs
- ExplicitDiscriminatorMap.cs
- PageFunction.cs
- ChangeNode.cs
- BitStack.cs
- Command.cs
- SignatureDescription.cs
- XmlLanguageConverter.cs
- PictureBoxDesigner.cs
- LambdaCompiler.Address.cs
- OracleParameterCollection.cs
- TextDecorationCollection.cs
- SiteMembershipCondition.cs
- SnapshotChangeTrackingStrategy.cs
- MouseGestureValueSerializer.cs
- GridItemCollection.cs
- PropertyIDSet.cs
- EllipseGeometry.cs
- Expander.cs
- Point4DValueSerializer.cs
- RightsManagementLicense.cs
- WsatEtwTraceListener.cs
- SlipBehavior.cs
- SmtpNetworkElement.cs
- CreateUserWizardStep.cs
- Figure.cs
- NumericUpDownAccelerationCollection.cs
- WindowsEditBoxRange.cs
- PersonalizableAttribute.cs
- ElementHostPropertyMap.cs
- FixedSOMFixedBlock.cs
- recordstatefactory.cs
- UnionQueryOperator.cs
- Dictionary.cs
- DbModificationCommandTree.cs
- ClipboardProcessor.cs
- HandleRef.cs
- HelpInfo.cs
- DateTimeAutomationPeer.cs
- TreeNodeMouseHoverEvent.cs
- CqlLexer.cs
- ToolboxComponentsCreatedEventArgs.cs
- HashRepartitionEnumerator.cs
- QueryPageSettingsEventArgs.cs
- OdbcPermission.cs
- HtmlTextArea.cs
- CodeAccessSecurityEngine.cs
- _DigestClient.cs
- BuildProviderUtils.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- EventLogPermission.cs
- ToolStripContentPanelRenderEventArgs.cs
- DrawingGroupDrawingContext.cs
- TemplatingOptionsDialog.cs
- PointConverter.cs
- InternalBase.cs
- ComplexPropertyEntry.cs
- FSWPathEditor.cs
- DaylightTime.cs
- TextBounds.cs
- ADConnectionHelper.cs
- ThicknessAnimationBase.cs
- ScrollContentPresenter.cs
- TextTreeTextNode.cs
- RawTextInputReport.cs
- PrtCap_Builder.cs
- ChangePassword.cs
- WpfMemberInvoker.cs
- ListViewItem.cs
- SqlNode.cs
- XmlNodeChangedEventManager.cs
- CompilationUtil.cs
- HttpModuleCollection.cs
- EventSinkHelperWriter.cs
- DataServiceEntityAttribute.cs
- Scripts.cs
- StringValidator.cs
- MemberNameValidator.cs
- AsyncParams.cs
- FunctionDescription.cs