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
- WSHttpTransportSecurityElement.cs
- odbcmetadatacollectionnames.cs
- VideoDrawing.cs
- MediaScriptCommandRoutedEventArgs.cs
- ProxyWebPart.cs
- PromptStyle.cs
- NativeWrapper.cs
- Size.cs
- StrongNameHelpers.cs
- QilNode.cs
- documentsequencetextcontainer.cs
- DocobjHost.cs
- ContentIterators.cs
- CursorInteropHelper.cs
- UrlMappingCollection.cs
- Utils.cs
- MatrixTransform3D.cs
- FileAuthorizationModule.cs
- FontConverter.cs
- FirewallWrapper.cs
- ElementAction.cs
- ContextInformation.cs
- entityreference_tresulttype.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- DbExpressionBuilder.cs
- CodeBinaryOperatorExpression.cs
- ManifestResourceInfo.cs
- DomainUpDown.cs
- WSSecurityXXX2005.cs
- OracleRowUpdatingEventArgs.cs
- Double.cs
- DesignerWithHeader.cs
- PrimitiveList.cs
- PackWebRequestFactory.cs
- ReaderContextStackData.cs
- SpellCheck.cs
- IIS7WorkerRequest.cs
- CompilationLock.cs
- Matrix3DValueSerializer.cs
- MenuStrip.cs
- VBIdentifierNameEditor.cs
- SchemaImporterExtensionElement.cs
- DataMisalignedException.cs
- HostingMessageProperty.cs
- TypeResolver.cs
- FocusTracker.cs
- EditorZoneDesigner.cs
- ProcessDesigner.cs
- SmiContext.cs
- ToolboxBitmapAttribute.cs
- LoginCancelEventArgs.cs
- HMACSHA1.cs
- XPathAncestorQuery.cs
- FastEncoderWindow.cs
- JsonServiceDocumentSerializer.cs
- safex509handles.cs
- FormattedTextSymbols.cs
- BooleanFunctions.cs
- SimpleType.cs
- JapaneseCalendar.cs
- SqlFactory.cs
- DesignerSerializationOptionsAttribute.cs
- CompiledXpathExpr.cs
- PromptStyle.cs
- MimeMultiPart.cs
- HotSpotCollection.cs
- UmAlQuraCalendar.cs
- MetadataUtilsSmi.cs
- InkCanvasAutomationPeer.cs
- WebPartConnectionsCancelEventArgs.cs
- cookieexception.cs
- ToolTipAutomationPeer.cs
- BindingOperations.cs
- HostingEnvironmentException.cs
- ScrollEventArgs.cs
- SubpageParagraph.cs
- ContextDataSourceContextData.cs
- StylusButton.cs
- SwitchLevelAttribute.cs
- UnsafeNativeMethods.cs
- ManipulationVelocities.cs
- TextPattern.cs
- ScaleTransform.cs
- SqlRowUpdatedEvent.cs
- GenericWebPart.cs
- VSDExceptions.cs
- COM2PictureConverter.cs
- RawTextInputReport.cs
- ModulesEntry.cs
- GroupDescription.cs
- HttpWebRequest.cs
- DBCSCodePageEncoding.cs
- PolyLineSegmentFigureLogic.cs
- ChameleonKey.cs
- TemplateControlBuildProvider.cs
- JapaneseLunisolarCalendar.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- GeneralTransform3DGroup.cs
- DictionaryEntry.cs
- GregorianCalendar.cs