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
- MobileUserControlDesigner.cs
- CodeIdentifiers.cs
- LinqDataSourceSelectEventArgs.cs
- objectquery_tresulttype.cs
- CreateDataSourceDialog.cs
- ControlUtil.cs
- VideoDrawing.cs
- DeriveBytes.cs
- DependencyPropertyHelper.cs
- CombinedGeometry.cs
- ContractComponent.cs
- RewritingValidator.cs
- LabelTarget.cs
- BitmapEffectvisualstate.cs
- SoapAttributes.cs
- OutputCacheSettingsSection.cs
- SQLCharsStorage.cs
- DataSourceCollectionBase.cs
- StateBag.cs
- XmlSerializationWriter.cs
- Int32KeyFrameCollection.cs
- Policy.cs
- HttpCacheVary.cs
- StandardToolWindows.cs
- SchemaSetCompiler.cs
- RuleSettings.cs
- XmlDeclaration.cs
- GeneratedCodeAttribute.cs
- HtmlTable.cs
- DataAdapter.cs
- DataControlExtensions.cs
- EncryptedKey.cs
- XmlDocumentSerializer.cs
- XmlUtilWriter.cs
- ErrorHandler.cs
- CategoryAttribute.cs
- LinqDataSourceUpdateEventArgs.cs
- NumericUpDownAcceleration.cs
- wmiprovider.cs
- TreeChangeInfo.cs
- TileBrush.cs
- LoginAutoFormat.cs
- DbSetClause.cs
- CharEntityEncoderFallback.cs
- AsyncOperationManager.cs
- TreeViewImageIndexConverter.cs
- TableItemStyle.cs
- BeginEvent.cs
- CaseCqlBlock.cs
- WebControlAdapter.cs
- HtmlImage.cs
- Mutex.cs
- DesignerLoader.cs
- LabelTarget.cs
- HostVisual.cs
- DataServiceProcessingPipelineEventArgs.cs
- StandardToolWindows.cs
- RtfToXamlReader.cs
- ColorIndependentAnimationStorage.cs
- XmlDictionary.cs
- ArgumentNullException.cs
- SolidColorBrush.cs
- WebServiceFaultDesigner.cs
- ObjectListDesigner.cs
- XmlReaderSettings.cs
- figurelengthconverter.cs
- HotSpotCollection.cs
- MarkupWriter.cs
- FormsAuthenticationTicket.cs
- WmlValidationSummaryAdapter.cs
- NameGenerator.cs
- NoneExcludedImageIndexConverter.cs
- Bezier.cs
- XPathDocumentBuilder.cs
- DataObjectFieldAttribute.cs
- TypeForwardedToAttribute.cs
- DocumentViewerAutomationPeer.cs
- ParameterToken.cs
- RecordConverter.cs
- XpsDocument.cs
- DataTable.cs
- Grant.cs
- EventSourceCreationData.cs
- PeerResolverBindingElement.cs
- RowToFieldTransformer.cs
- UIElement.cs
- DefaultSettingsSection.cs
- SortKey.cs
- Duration.cs
- ProxyHwnd.cs
- TextRenderer.cs
- TemplateControlBuildProvider.cs
- RecognizedAudio.cs
- CipherData.cs
- ProtocolViolationException.cs
- WebContentFormatHelper.cs
- DataGridHeadersVisibilityToVisibilityConverter.cs
- DataGridViewTextBoxColumn.cs
- TraceSwitch.cs
- NativeCompoundFileAPIs.cs