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
- JsonClassDataContract.cs
- RepeatButton.cs
- DriveInfo.cs
- Thread.cs
- GeometryDrawing.cs
- KeyedByTypeCollection.cs
- InitializationEventAttribute.cs
- FamilyCollection.cs
- FrameAutomationPeer.cs
- RoleGroupCollectionEditor.cs
- ListCollectionView.cs
- SafeFindHandle.cs
- AutomationPatternInfo.cs
- ImportCatalogPart.cs
- ObjectDataSourceFilteringEventArgs.cs
- BinaryWriter.cs
- GridErrorDlg.cs
- VerificationException.cs
- DynamicResourceExtensionConverter.cs
- TextParagraphView.cs
- ViewEvent.cs
- StreamDocument.cs
- ZoneButton.cs
- HwndSource.cs
- FormViewDeleteEventArgs.cs
- Queue.cs
- CompositeControl.cs
- BufferModesCollection.cs
- MediaElement.cs
- ManipulationStartedEventArgs.cs
- SizeConverter.cs
- DbConnectionClosed.cs
- BuildProviderUtils.cs
- ErrorInfoXmlDocument.cs
- _CacheStreams.cs
- DataGridToolTip.cs
- CategoryNameCollection.cs
- RawMouseInputReport.cs
- PipeStream.cs
- HtmlTableCellCollection.cs
- BitmapEncoder.cs
- DaylightTime.cs
- MailBnfHelper.cs
- PairComparer.cs
- SwitchDesigner.xaml.cs
- ServerValidateEventArgs.cs
- Crypto.cs
- SystemUdpStatistics.cs
- OutputCacheSettingsSection.cs
- InlineUIContainer.cs
- ErrorStyle.cs
- NestedContainer.cs
- ThicknessAnimation.cs
- StickyNoteHelper.cs
- ITextView.cs
- DataGridViewCellFormattingEventArgs.cs
- Function.cs
- GlyphRunDrawing.cs
- XAMLParseException.cs
- ConstantExpression.cs
- ValidationHelper.cs
- PartialTrustVisibleAssemblyCollection.cs
- DataGridLinkButton.cs
- TextTreeObjectNode.cs
- Geometry.cs
- UIPropertyMetadata.cs
- ColorKeyFrameCollection.cs
- DetailsViewPagerRow.cs
- OutputCacheSettings.cs
- AtomMaterializerLog.cs
- RemoteWebConfigurationHostServer.cs
- AliasExpr.cs
- CategoryGridEntry.cs
- Boolean.cs
- CodeTypeDeclaration.cs
- PointCollectionValueSerializer.cs
- ToolboxSnapDragDropEventArgs.cs
- TextElementCollection.cs
- SuppressMessageAttribute.cs
- WebPartConnectionsCancelEventArgs.cs
- WebPartConnectionsCloseVerb.cs
- While.cs
- SQLStringStorage.cs
- FormsAuthenticationModule.cs
- ReliableReplySessionChannel.cs
- ClientSettingsSection.cs
- Token.cs
- ClientScriptManager.cs
- SqlCommand.cs
- CodeConditionStatement.cs
- IisTraceListener.cs
- SqlGenericUtil.cs
- TableChangeProcessor.cs
- UriTemplateVariableQueryValue.cs
- DropSourceBehavior.cs
- WorkflowInstanceExtensionProvider.cs
- XmlUtf8RawTextWriter.cs
- WebPart.cs
- TextSearch.cs
- XmlAttributeCache.cs