Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Bookmark.cs / 1305376 / Bookmark.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities { using System; using System.Activities.Hosting; using System.Activities.Runtime; using System.Collections.Generic; using System.Runtime; using System.Runtime.Serialization; using System.Globalization; [DataContract] [Fx.Tag.XamlVisible(false)] public class Bookmark : IEquatable{ static Bookmark asyncOperationCompletionBookmark = new Bookmark(-1); static IEqualityComparer comparer; //Used only when exclusive scopes are involved [DataMember(EmitDefaultValue = false, Order = 2)] ExclusiveHandleList exclusiveHandlesThatReferenceThis; [DataMember(EmitDefaultValue = false, Order = 0)] long id; [DataMember(EmitDefaultValue = false, Order = 1)] string externalName; Bookmark(long id) { Fx.Assert(id != 0, "id should not be zero"); this.id = id; } public Bookmark(string name) { if (string.IsNullOrEmpty(name)) { throw FxTrace.Exception.ArgumentNullOrEmpty("name"); } this.externalName = name; } internal static Bookmark AsyncOperationCompletionBookmark { get { return asyncOperationCompletionBookmark; } } internal static IEqualityComparer Comparer { get { if (comparer == null) { comparer = new BookmarkComparer(); } return comparer; } } [DataMember(EmitDefaultValue = false)] internal BookmarkScope Scope { get; set; } internal bool IsNamed { get { return this.id == 0; } } public string Name { get { if (this.IsNamed) { return this.externalName; } else { return string.Empty; } } } internal long Id { get { Fx.Assert(!this.IsNamed, "We should only get the id for unnamed bookmarks."); return this.id; } } internal ExclusiveHandleList ExclusiveHandles { get { return this.exclusiveHandlesThatReferenceThis; } set { this.exclusiveHandlesThatReferenceThis = value; } } internal static Bookmark Create(long id) { return new Bookmark(id); } internal BookmarkInfo GenerateBookmarkInfo(BookmarkCallbackWrapper bookmarkCallback) { Fx.Assert(this.IsNamed, "Can only generate BookmarkInfo for external bookmarks"); BookmarkScopeInfo scopeInfo = null; if (this.Scope != null) { scopeInfo = this.Scope.GenerateScopeInfo(); } return new BookmarkInfo(this.externalName, bookmarkCallback.ActivityInstance.Activity.DisplayName, scopeInfo); } public bool Equals(Bookmark other) { if (object.ReferenceEquals(other, null)) { return false; } if (this.IsNamed) { return other.IsNamed && this.externalName == other.externalName; } else { return this.id == other.id; } } public override bool Equals(object obj) { return this.Equals(obj as Bookmark); } public override int GetHashCode() { if (this.IsNamed) { return this.externalName.GetHashCode(); } else { return this.id.GetHashCode(); } } public override string ToString() { if (this.IsNamed) { return this.Name; } else { return this.Id.ToString(CultureInfo.InvariantCulture); } } [DataContract] class BookmarkComparer : IEqualityComparer { public BookmarkComparer() { } public bool Equals(Bookmark x, Bookmark y) { if (object.ReferenceEquals(x, null)) { return object.ReferenceEquals(y, null); } return x.Equals(y); } public int GetHashCode(Bookmark obj) { return obj.GetHashCode(); } } } } // 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
- MessageSmuggler.cs
- Popup.cs
- Predicate.cs
- LiteralControl.cs
- EncodingTable.cs
- Socket.cs
- ApplicationInterop.cs
- CipherData.cs
- listviewsubitemcollectioneditor.cs
- PointLight.cs
- TransformCryptoHandle.cs
- DataGridViewLinkColumn.cs
- DemultiplexingClientMessageFormatter.cs
- HttpFileCollection.cs
- VirtualPathUtility.cs
- ErrorsHelper.cs
- RC2.cs
- TextReader.cs
- XmlBinaryReader.cs
- PropertyConverter.cs
- HostedBindingBehavior.cs
- FunctionImportElement.cs
- ExecutionContext.cs
- ObjectTypeMapping.cs
- JournalNavigationScope.cs
- Vector3DCollectionConverter.cs
- IConvertible.cs
- BaseCodePageEncoding.cs
- ExtensionWindowHeader.cs
- Trigger.cs
- contentDescriptor.cs
- URLString.cs
- _NetworkingPerfCounters.cs
- RealizationContext.cs
- HeaderCollection.cs
- XmlQueryStaticData.cs
- ProgressBar.cs
- EdmToObjectNamespaceMap.cs
- TcpTransportSecurity.cs
- StandardCommands.cs
- X509Extension.cs
- StructuredType.cs
- SizeAnimationClockResource.cs
- AsyncPostBackTrigger.cs
- LocalizableResourceBuilder.cs
- RoutedUICommand.cs
- RuntimeConfig.cs
- SafeProcessHandle.cs
- BindingManagerDataErrorEventArgs.cs
- EditCommandColumn.cs
- CodeArrayCreateExpression.cs
- StreamedFramingRequestChannel.cs
- Menu.cs
- XmlDictionaryReaderQuotas.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- SqlRewriteScalarSubqueries.cs
- UnitySerializationHolder.cs
- RsaSecurityToken.cs
- DataRecordInfo.cs
- RectangleF.cs
- MatrixKeyFrameCollection.cs
- ContentElement.cs
- ACE.cs
- ControlIdConverter.cs
- ValueTypeFixupInfo.cs
- FacetChecker.cs
- GenerateDerivedKeyRequest.cs
- AdornerPresentationContext.cs
- NetMsmqSecurityMode.cs
- SynchronizingStream.cs
- Utilities.cs
- PseudoWebRequest.cs
- Scheduler.cs
- DrawItemEvent.cs
- SByteConverter.cs
- KeyProperty.cs
- DelimitedListTraceListener.cs
- DropShadowEffect.cs
- WindowsIdentity.cs
- TraceContextEventArgs.cs
- SuspendDesigner.cs
- ArrayEditor.cs
- XmlMtomReader.cs
- PolicyStatement.cs
- DragAssistanceManager.cs
- FontStretch.cs
- FunctionCommandText.cs
- CollectionEditorDialog.cs
- ControlHelper.cs
- StandardToolWindows.cs
- TableRow.cs
- DataGridViewCellFormattingEventArgs.cs
- ImageIndexConverter.cs
- WorkItem.cs
- Mouse.cs
- CodeRegionDirective.cs
- DoubleAnimationClockResource.cs
- XPathItem.cs
- TreeWalkHelper.cs
- ExtractorMetadata.cs