Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / MS / Internal / TraceLevelStore.cs / 1305600 / TraceLevelStore.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: Storage for the "TraceLevel" attached property. // //--------------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Diagnostics; namespace MS.Internal { ////// This class stores values for the attached property /// PresentationTraceSources.TraceLevel. /// internal static class TraceLevelStore { #region Constructors // // Constructors // #endregion Constructors #region Internal Methods // // Internal Methods // ////// Reads the attached property TraceLevel from the given element. /// internal static PresentationTraceLevel GetTraceLevel(object element) { PresentationTraceLevel result; if (element == null || _dictionary.Count == 0) { result = PresentationTraceLevel.None; } else { lock (_dictionary) { Key key = new Key(element); if (!_dictionary.TryGetValue(key, out result)) { result = PresentationTraceLevel.None; } } } return result; } ////// Writes the attached property TraceLevel to the given element. /// internal static void SetTraceLevel(object element, PresentationTraceLevel traceLevel) { if (element == null) return; lock (_dictionary) { Key key = new Key(element, true); if (traceLevel > PresentationTraceLevel.None) { _dictionary[key] = traceLevel; } else { _dictionary.Remove(key); } } } #endregion Internal Methods #region Private Fields // // Private Fields // private static Dictionary_dictionary = new Dictionary (); #endregion Private Fields #region Table Keys // the key for the dictionary: <((element)), hashcode> private struct Key { internal Key(object element, bool useWeakRef) { _element = new WeakReference(element); _hashcode = element.GetHashCode(); } internal Key(object element) { _element = element; _hashcode = element.GetHashCode(); } public override int GetHashCode() { #if DEBUG WeakReference wr = _element as WeakReference; object element = (wr != null) ? wr.Target : _element; if (element != null) { int hashcode = element.GetHashCode(); Debug.Assert(hashcode == _hashcode, "hashcodes disagree"); } #endif return _hashcode; } public override bool Equals(object o) { if (o is Key) { WeakReference wr; Key that = (Key)o; if (this._hashcode != that._hashcode) return false; wr = this._element as WeakReference; object s1 = (wr != null) ? wr.Target : this._element; wr = that._element as WeakReference; object s2 = (wr != null) ? wr.Target : that._element; if (s1!=null && s2!=null) return (s1 == s2); else return (this._element == that._element); } else { return false; } } public static bool operator==(Key key1, Key key2) { return key1.Equals(key2); } public static bool operator!=(Key key1, Key key2) { return !key1.Equals(key2); } object _element; // lookup: direct ref. In table: WeakRef int _hashcode; // cached, in case source is GC'd } #endregion Table Keys } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SymLanguageType.cs
- XmlReflectionImporter.cs
- MachineKeyConverter.cs
- Currency.cs
- ToolboxComponentsCreatingEventArgs.cs
- DataTableClearEvent.cs
- PerformanceCounter.cs
- FontFamilyValueSerializer.cs
- ping.cs
- HwndAppCommandInputProvider.cs
- InlineCollection.cs
- DesignerActionList.cs
- SimplePropertyEntry.cs
- ProcessMessagesAsyncResult.cs
- DataSetUtil.cs
- DependencyPropertyKey.cs
- TextSearch.cs
- LocalBuilder.cs
- FontFamily.cs
- ValidationPropertyAttribute.cs
- PerfService.cs
- TextEditorLists.cs
- ThicknessConverter.cs
- UncommonField.cs
- WebPartRestoreVerb.cs
- DataGridLinkButton.cs
- ConditionCollection.cs
- UIntPtr.cs
- WmlImageAdapter.cs
- WindowsRichEdit.cs
- TraceUtils.cs
- XmlNodeList.cs
- Menu.cs
- VisualStateManager.cs
- AuthStoreRoleProvider.cs
- CompressionTracing.cs
- XmlUnspecifiedAttribute.cs
- Renderer.cs
- FormViewDeleteEventArgs.cs
- metadatamappinghashervisitor.cs
- LicFileLicenseProvider.cs
- HtmlDocument.cs
- ElapsedEventArgs.cs
- ControlLocalizer.cs
- _Win32.cs
- RTLAwareMessageBox.cs
- ListViewVirtualItemsSelectionRangeChangedEvent.cs
- Label.cs
- invalidudtexception.cs
- Permission.cs
- ButtonColumn.cs
- ConnectionManager.cs
- FontStyle.cs
- CurrentTimeZone.cs
- InfoCardSymmetricCrypto.cs
- ProfilePropertySettings.cs
- SafeNativeMethodsMilCoreApi.cs
- HostingEnvironmentException.cs
- DateRangeEvent.cs
- StateMachine.cs
- SiteIdentityPermission.cs
- webclient.cs
- WizardPanel.cs
- RelationshipEndCollection.cs
- BaseConfigurationRecord.cs
- HyperLinkField.cs
- CacheDependency.cs
- CommandPlan.cs
- InputReport.cs
- StreamWithDictionary.cs
- ParameterBuilder.cs
- CompositeScriptReference.cs
- SessionStateItemCollection.cs
- ImportContext.cs
- RoleExceptions.cs
- Point3DAnimationUsingKeyFrames.cs
- SectionXmlInfo.cs
- FlowLayoutPanel.cs
- StoreContentChangedEventArgs.cs
- MediaElement.cs
- SspiNegotiationTokenAuthenticatorState.cs
- mactripleDES.cs
- UpdatePanelTriggerCollection.cs
- SplitContainer.cs
- StateMachineWorkflowInstance.cs
- RawKeyboardInputReport.cs
- SqlFunctions.cs
- TypeReference.cs
- UserControl.cs
- Pool.cs
- Cloud.cs
- CopyNodeSetAction.cs
- WebPartCancelEventArgs.cs
- ContractInferenceHelper.cs
- ImageInfo.cs
- MobileControl.cs
- GridViewSelectEventArgs.cs
- LoadWorkflowByInstanceKeyCommand.cs
- WorkflowRuntimeEndpoint.cs
- XamlToRtfWriter.cs