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
- InvalidPrinterException.cs
- TargetInvocationException.cs
- ExceptionUtil.cs
- FontConverter.cs
- EntityDataSourceState.cs
- ToolStripItemTextRenderEventArgs.cs
- InvokeMemberBinder.cs
- KeyProperty.cs
- RadioButtonList.cs
- ItemCollectionEditor.cs
- OperatingSystem.cs
- PageContent.cs
- localization.cs
- DesignerFrame.cs
- DescendantBaseQuery.cs
- Rss20FeedFormatter.cs
- NotifyCollectionChangedEventArgs.cs
- XmlElementCollection.cs
- Button.cs
- MustUnderstandSoapException.cs
- TabItemWrapperAutomationPeer.cs
- VirtualPathUtility.cs
- HtmlContainerControl.cs
- TraceHwndHost.cs
- OletxTransactionHeader.cs
- XmlNavigatorStack.cs
- Perspective.cs
- DecodeHelper.cs
- Select.cs
- GlobalizationSection.cs
- XmlSchemaExporter.cs
- DataGridViewControlCollection.cs
- OdbcError.cs
- WebServiceParameterData.cs
- XamlTemplateSerializer.cs
- JournalEntryStack.cs
- ProxyHwnd.cs
- DbConnectionInternal.cs
- ControlIdConverter.cs
- X509Certificate2Collection.cs
- FactoryMaker.cs
- ValidateNames.cs
- ClientBuildManager.cs
- IDispatchConstantAttribute.cs
- AsyncResult.cs
- DbTransaction.cs
- EtwTrackingBehavior.cs
- SoapEnumAttribute.cs
- WriterOutput.cs
- nulltextcontainer.cs
- XPathCompileException.cs
- DataGridPageChangedEventArgs.cs
- NetworkInterface.cs
- ObfuscationAttribute.cs
- EtwTrace.cs
- Socket.cs
- X509ChainPolicy.cs
- DependencyPropertyHelper.cs
- XamlClipboardData.cs
- FontFamilyValueSerializer.cs
- GPStream.cs
- cookiecollection.cs
- SamlAuthenticationClaimResource.cs
- GradientBrush.cs
- TextBoxAutoCompleteSourceConverter.cs
- TypeUsageBuilder.cs
- FreezableCollection.cs
- TextTreeExtractElementUndoUnit.cs
- WebConfigurationHostFileChange.cs
- SessionStateItemCollection.cs
- PreservationFileWriter.cs
- IResourceProvider.cs
- Schedule.cs
- EntityContainerEmitter.cs
- PtsPage.cs
- Handle.cs
- ServiceChannelProxy.cs
- RewritingProcessor.cs
- AuthenticateEventArgs.cs
- GenerateScriptTypeAttribute.cs
- ThreadStaticAttribute.cs
- StatusBarItemAutomationPeer.cs
- SafeRightsManagementSessionHandle.cs
- ImageAutomationPeer.cs
- DesignerDataConnection.cs
- GiveFeedbackEventArgs.cs
- NaturalLanguageHyphenator.cs
- UriParserTemplates.cs
- SystemWebCachingSectionGroup.cs
- EntityDataSourceChangingEventArgs.cs
- AssemblyBuilderData.cs
- StringFormat.cs
- LogLogRecordEnumerator.cs
- TdsParameterSetter.cs
- XPathMessageFilterElementComparer.cs
- XMLUtil.cs
- OperatingSystem.cs
- LocalFileSettingsProvider.cs
- smtppermission.cs
- BypassElement.cs