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
- PasswordRecovery.cs
- SqlNotificationRequest.cs
- EntityDataSourceView.cs
- WebServiceData.cs
- Literal.cs
- HostingEnvironmentSection.cs
- DurableDispatcherAddressingFault.cs
- Logging.cs
- IntranetCredentialPolicy.cs
- TextSchema.cs
- ThreadInterruptedException.cs
- safelink.cs
- IndicShape.cs
- VBCodeProvider.cs
- ToolStripItemRenderEventArgs.cs
- WebPartUtil.cs
- UrlAuthorizationModule.cs
- ToolbarAUtomationPeer.cs
- DateTimePicker.cs
- EmptyEnumerable.cs
- CodeBlockBuilder.cs
- Overlapped.cs
- JavaScriptString.cs
- ServiceAuthorizationBehavior.cs
- DesignerActionUI.cs
- NativeMethods.cs
- COM2Properties.cs
- ServiceModelReg.cs
- SafePointer.cs
- ReadOnlyHierarchicalDataSource.cs
- SqlBulkCopyColumnMappingCollection.cs
- AlgoModule.cs
- SqlStream.cs
- RijndaelManaged.cs
- CharEntityEncoderFallback.cs
- InProcStateClientManager.cs
- GACMembershipCondition.cs
- HopperCache.cs
- AssemblyFilter.cs
- DbDataSourceEnumerator.cs
- HttpRuntime.cs
- DataObjectSettingDataEventArgs.cs
- MaterializeFromAtom.cs
- AttachedAnnotation.cs
- XmlParser.cs
- ToolStripContainer.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- EventLogInformation.cs
- XmlnsCompatibleWithAttribute.cs
- XmlEncoding.cs
- LexicalChunk.cs
- TCEAdapterGenerator.cs
- ExportOptions.cs
- PixelShader.cs
- HttpCacheVaryByContentEncodings.cs
- CharConverter.cs
- DataBindingCollection.cs
- QueryLifecycle.cs
- RegexFCD.cs
- CursorConverter.cs
- AutomationElement.cs
- Int16AnimationUsingKeyFrames.cs
- ThreadAttributes.cs
- SafeLibraryHandle.cs
- WmlValidatorAdapter.cs
- MsmqHostedTransportManager.cs
- SuppressMergeCheckAttribute.cs
- ChannelManager.cs
- List.cs
- Camera.cs
- KnownColorTable.cs
- RenameRuleObjectDialog.Designer.cs
- QueryPageSettingsEventArgs.cs
- VectorAnimationBase.cs
- TraceHandlerErrorFormatter.cs
- RegexTree.cs
- PropertiesTab.cs
- bidPrivateBase.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- CryptoKeySecurity.cs
- WebControl.cs
- IgnoreDataMemberAttribute.cs
- QilReference.cs
- XmlFileEditor.cs
- Parameter.cs
- EntityType.cs
- Inflater.cs
- TextEndOfSegment.cs
- MapPathBasedVirtualPathProvider.cs
- TypeDelegator.cs
- EmptyCollection.cs
- ParserContext.cs
- DefaultValueAttribute.cs
- CodeTypeReferenceCollection.cs
- ExpressionHelper.cs
- CodePageEncoding.cs
- PreloadHost.cs
- Boolean.cs
- DefaultTraceListener.cs
- NameValuePair.cs