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
- TimerExtension.cs
- StorageMappingFragment.cs
- ControlPropertyNameConverter.cs
- WindowsFormsSectionHandler.cs
- LocalizedNameDescriptionPair.cs
- TextServicesDisplayAttribute.cs
- MimeTypeAttribute.cs
- SSmlParser.cs
- SegmentTree.cs
- _LocalDataStore.cs
- TextOptions.cs
- TriggerAction.cs
- RectConverter.cs
- _HTTPDateParse.cs
- ButtonBase.cs
- BooleanStorage.cs
- Tile.cs
- COM2ExtendedTypeConverter.cs
- ServiceOperationListItemList.cs
- XmlElementAttribute.cs
- CacheModeValueSerializer.cs
- ASCIIEncoding.cs
- ColorAnimationUsingKeyFrames.cs
- ReadOnlyCollectionBase.cs
- HMAC.cs
- EventDescriptor.cs
- XmlEncApr2001.cs
- QueryContinueDragEvent.cs
- EncoderExceptionFallback.cs
- Control.cs
- Composition.cs
- UrlMappingsSection.cs
- SvcMapFileLoader.cs
- CodeMemberField.cs
- BindingOperations.cs
- ConnectionsZone.cs
- PropertyPathConverter.cs
- HtmlHistory.cs
- Point4DValueSerializer.cs
- UIElementParaClient.cs
- NamedElement.cs
- QueryExtender.cs
- SubclassTypeValidator.cs
- Sql8ConformanceChecker.cs
- _ShellExpression.cs
- XamlBrushSerializer.cs
- RbTree.cs
- ListItemCollection.cs
- RegionInfo.cs
- SizeValueSerializer.cs
- Encoder.cs
- BinaryWriter.cs
- CodeNamespaceImportCollection.cs
- AuthorizationContext.cs
- DefaultHttpHandler.cs
- GlobalizationSection.cs
- SimpleHandlerFactory.cs
- WindowsListViewSubItem.cs
- ModelPropertyDescriptor.cs
- DbException.cs
- UpdateManifestForBrowserApplication.cs
- ValidationHelper.cs
- HttpCookie.cs
- Rect.cs
- ServicesExceptionNotHandledEventArgs.cs
- CommandField.cs
- XmlComplianceUtil.cs
- RedistVersionInfo.cs
- MarkerProperties.cs
- FixedDSBuilder.cs
- Visual.cs
- IntranetCredentialPolicy.cs
- ListViewCancelEventArgs.cs
- ServiceElementCollection.cs
- FormatterServices.cs
- ProfileElement.cs
- EndEvent.cs
- mediapermission.cs
- ControlEvent.cs
- MemberAccessException.cs
- ComponentResourceKey.cs
- EmptyWithCancelationCheckWorkItem.cs
- CompilerInfo.cs
- Parameter.cs
- DeclarativeCatalogPart.cs
- DataKey.cs
- Array.cs
- CopyAttributesAction.cs
- SoapExtensionImporter.cs
- RuleInfoComparer.cs
- CodeTypeReference.cs
- AssemblyBuilder.cs
- DecoderNLS.cs
- ServerValidateEventArgs.cs
- CallbackTimeoutsBehavior.cs
- _AuthenticationState.cs
- DetailsViewPageEventArgs.cs
- XmlAttributeAttribute.cs
- DispatcherObject.cs
- ObjectQueryState.cs