Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / Microsoft / VisualBasic / Activities / VisualBasicImportReference.cs / 1305376 / VisualBasicImportReference.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace Microsoft.VisualBasic.Activities { using System; using System.Globalization; using System.Reflection; using System.Xaml; using System.Xml.Linq; public class VisualBasicImportReference : IEquatable{ static AssemblyNameEqualityComparer equalityComparer = new AssemblyNameEqualityComparer(); AssemblyName assemblyName; string assemblyNameString; int hashCode; string import; public VisualBasicImportReference() { } public string Assembly { get { return this.assemblyNameString; } set { if (value == null) { this.assemblyName = null; this.assemblyNameString = null; } else { // FileLoadException thrown from this ctor indicates invalid assembly name this.assemblyName = new AssemblyName(value); this.assemblyNameString = this.assemblyName.FullName; } this.EarlyBoundAssembly = null; } } public string Import { get { return this.import; } set { if (value != null) { this.import = value.Trim(); this.hashCode = this.import.ToUpperInvariant().GetHashCode(); } else { this.import = null; this.hashCode = 0; } this.EarlyBoundAssembly = null; } } internal AssemblyName AssemblyName { get { return this.assemblyName; } } internal XNamespace Xmlns { get; set; } // for the short-cut assembly resolution // from VBImportReference.AssemblyName ==> System.Reflection.Assembly // this is an internal state that implies the context in which a VB assembly resolution is progressing // once VB extracted this Assembly object to pass onto the compiler, // it must explicitly set this property back to null. // Clone() will also explicitly set this property of the new to null to prevent users from inadvertently // creating a copy of VBImportReference that might not resolve to the assembly of his or her intent. internal Assembly EarlyBoundAssembly { get; set; } internal VisualBasicImportReference Clone() { VisualBasicImportReference toReturn = (VisualBasicImportReference)this.MemberwiseClone(); toReturn.EarlyBoundAssembly = null; return toReturn; } public override int GetHashCode() { return this.hashCode; } public bool Equals(VisualBasicImportReference other) { if (other == null) { return false; } if (Object.ReferenceEquals(this, other)) { return true; } if (this.EarlyBoundAssembly != other.EarlyBoundAssembly) { return false; } // VB does case insensitive comparisons for imports if (string.Compare(this.Import, other.Import, StringComparison.OrdinalIgnoreCase) != 0) { return false; } // now compare the assemblies if (this.AssemblyName == null && other.AssemblyName == null) { return true; } else if (this.AssemblyName == null && other.AssemblyName != null) { return false; } else if (this.AssemblyName != null && other.AssemblyName == null) { return false; } return equalityComparer.Equals(this.AssemblyName, other.AssemblyName); } internal void GenerateXamlNamespace(INamespacePrefixLookup namespaceLookup) { // promote reference to xmlns declaration string xamlNamespace = null; if (this.Xmlns != null && !string.IsNullOrEmpty(this.Xmlns.NamespaceName)) { xamlNamespace = this.Xmlns.NamespaceName; } else { xamlNamespace = string.Format(CultureInfo.InvariantCulture, "clr-namespace:{0};assembly={1}", this.Import, this.Assembly); } // we don't need the return value since we just want to register the namespace/assembly pair namespaceLookup.LookupPrefix(xamlNamespace); } } } // 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
- AnnotationComponentChooser.cs
- XmlNodeList.cs
- Msec.cs
- XmlDataFileEditor.cs
- RowVisual.cs
- GroupStyle.cs
- EventLogEntry.cs
- SiteMapPath.cs
- ImmutableAssemblyCacheEntry.cs
- FormViewDeletedEventArgs.cs
- CustomErrorCollection.cs
- SamlAssertionKeyIdentifierClause.cs
- CodeRemoveEventStatement.cs
- NamespaceCollection.cs
- ValidationError.cs
- ServiceContractGenerator.cs
- TextRangeAdaptor.cs
- InternalPermissions.cs
- DatagridviewDisplayedBandsData.cs
- Or.cs
- TransportConfigurationTypeElementCollection.cs
- XmlNullResolver.cs
- TextEditorContextMenu.cs
- OverlappedContext.cs
- GridItemProviderWrapper.cs
- InstanceHandleReference.cs
- ImmutableCommunicationTimeouts.cs
- VerificationException.cs
- ResizeBehavior.cs
- Deserializer.cs
- ProcessModuleCollection.cs
- filewebrequest.cs
- ObjectSelectorEditor.cs
- LinearGradientBrush.cs
- DataRowExtensions.cs
- WebBrowserNavigatedEventHandler.cs
- Subtract.cs
- FontStretchConverter.cs
- DNS.cs
- UnmanagedBitmapWrapper.cs
- ContourSegment.cs
- __Filters.cs
- BadImageFormatException.cs
- MediaCommands.cs
- Event.cs
- IsolatedStorageFile.cs
- OpenTypeLayout.cs
- DispatcherFrame.cs
- ActivityBuilderHelper.cs
- IResourceProvider.cs
- RadialGradientBrush.cs
- GroupBoxAutomationPeer.cs
- ClientApiGenerator.cs
- LoadGrammarCompletedEventArgs.cs
- OdbcCommandBuilder.cs
- State.cs
- ToolboxBitmapAttribute.cs
- AdapterDictionary.cs
- InternalConfigHost.cs
- FieldNameLookup.cs
- Vector.cs
- InputLanguageEventArgs.cs
- GroupBoxDesigner.cs
- AdapterDictionary.cs
- FilteredDataSetHelper.cs
- SrgsNameValueTag.cs
- EventDescriptor.cs
- Semaphore.cs
- DirectoryGroupQuery.cs
- BooleanConverter.cs
- IPipelineRuntime.cs
- DBAsyncResult.cs
- TableChangeProcessor.cs
- PrintPreviewControl.cs
- HttpHeaderCollection.cs
- CultureMapper.cs
- XamlDebuggerXmlReader.cs
- _ConnectionGroup.cs
- SourceFilter.cs
- ConfigurationSection.cs
- WorkflowOwnershipException.cs
- ImmutablePropertyDescriptorGridEntry.cs
- RenderDataDrawingContext.cs
- XsltSettings.cs
- PersonalizationProviderCollection.cs
- SoapObjectWriter.cs
- httpapplicationstate.cs
- ColumnMapVisitor.cs
- PrinterUnitConvert.cs
- MenuItem.cs
- Tablet.cs
- CodeGroup.cs
- CodeExpressionCollection.cs
- XmlHierarchicalEnumerable.cs
- SetterBaseCollection.cs
- Attributes.cs
- MessageBox.cs
- DelegatedStream.cs
- InternalsVisibleToAttribute.cs
- StyleSheetDesigner.cs