Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Configuration / RuleInfoComparer.cs / 1305376 / RuleInfoComparer.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Configuration
{
using System;
using System.Xml;
using System.Configuration;
using System.Collections.Specialized;
using System.Collections;
using System.Globalization;
using System.IO;
using System.Text;
using System.ComponentModel;
using System.Web.Hosting;
using System.Web.Util;
using System.Web.Configuration;
using System.Web.Management;
using System.Web.Compilation;
//
// This class is used to compare two RuleInfo object. Basically, the array list
// will be sorted based on class hierachical order. The smaller the value, the
// more nearer the class is to the root (WebBaseEvent), in a class inheritance sense.
//
// On the other hand, if x > y, it means x is NOT a parent class of y.
//
// The array is sorted in this way so that if we want to find out the config setting of
// an event class x, we start searching in a decreasing order, and the first entry (E)
// that satifies the test: if (x is E), then we find the right settings for x.
//
// BTW, this is just a trick to save me from writing too much code. A n-node tree
// method is faster, but I was too lazy.
//
internal class RuleInfoComparer : IComparer{
public int Compare(object x, object y) {
int res;
Type xType =
((HealthMonitoringSectionHelper.RuleInfo)x)._eventMappingSettings.RealType;
Type yType =
((HealthMonitoringSectionHelper.RuleInfo)y)._eventMappingSettings.RealType;
if (xType.Equals(yType)) {
res = 0;
}
else if (xType.IsSubclassOf(yType)) {
res = 1;
}
else if (yType.IsSubclassOf(xType)) {
res = -1;
}
else {
// If they're unrelated, we can't return 0 because it
// will confuse the sorting method.
// We can return 1 or -1, but it must be consistent.
return String.Compare(xType.ToString(), yType.ToString(), StringComparison.Ordinal);
}
Debug.Trace("RuleInfoComparer", "xType=" + xType.ToString() +
"; yType=" + yType.ToString() + "; res=" + res);
return res;
}
}
}
// 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
- ControlCachePolicy.cs
- SqlFormatter.cs
- MethodToken.cs
- DataGridViewColumnCollection.cs
- MobileTemplatedControlDesigner.cs
- WebZone.cs
- StateValidator.cs
- XmlUrlEditor.cs
- TailPinnedEventArgs.cs
- CryptoStream.cs
- MenuEventArgs.cs
- HeaderedItemsControl.cs
- WindowsGraphicsWrapper.cs
- CalendarSelectionChangedEventArgs.cs
- MessageRpc.cs
- ArraySegment.cs
- XPathSingletonIterator.cs
- DeferredElementTreeState.cs
- SqlErrorCollection.cs
- FontCacheUtil.cs
- SessionEndedEventArgs.cs
- SHA1Managed.cs
- UpdateRecord.cs
- InvalidPipelineStoreException.cs
- ListViewInsertionMark.cs
- AsyncSerializedWorker.cs
- WpfPayload.cs
- RegexNode.cs
- ListViewItemMouseHoverEvent.cs
- BitmapEffectOutputConnector.cs
- LabelAutomationPeer.cs
- TraceSection.cs
- BevelBitmapEffect.cs
- KnownBoxes.cs
- DataIdProcessor.cs
- Int64Animation.cs
- HeaderCollection.cs
- ContextBase.cs
- MailHeaderInfo.cs
- StorageScalarPropertyMapping.cs
- HtmlTableRow.cs
- FixUp.cs
- KeyedCollection.cs
- DataServiceResponse.cs
- ResourceContainerWrapper.cs
- ManipulationPivot.cs
- Positioning.cs
- FormatterConverter.cs
- TextLineBreak.cs
- AdornerDecorator.cs
- MemoryFailPoint.cs
- Int16AnimationBase.cs
- HyperlinkAutomationPeer.cs
- TextContainerHelper.cs
- DynamicRendererThreadManager.cs
- XmlEventCache.cs
- HeaderedItemsControl.cs
- XmlSerializerNamespaces.cs
- PassportAuthenticationModule.cs
- Effect.cs
- XamlFigureLengthSerializer.cs
- TableLayoutStyle.cs
- HMACSHA512.cs
- EntityDataSourceChangingEventArgs.cs
- basenumberconverter.cs
- ManagementEventArgs.cs
- DataTableMappingCollection.cs
- ComponentManagerBroker.cs
- EncryptedPackage.cs
- ManagementClass.cs
- PackageDigitalSignatureManager.cs
- PagedDataSource.cs
- AppModelKnownContentFactory.cs
- Column.cs
- FixUpCollection.cs
- VScrollBar.cs
- SaveRecipientRequest.cs
- XmlBinaryReader.cs
- _UriTypeConverter.cs
- odbcmetadatafactory.cs
- HostingMessageProperty.cs
- CookieHandler.cs
- Utils.cs
- BitmapEffectInput.cs
- WebPartEditVerb.cs
- ClosableStream.cs
- RadioButton.cs
- controlskin.cs
- RawStylusActions.cs
- CompilerCollection.cs
- Processor.cs
- XslNumber.cs
- InternalBase.cs
- TextFormatter.cs
- DataGridViewRowHeaderCell.cs
- WrappedDispatcherException.cs
- ToolboxItemCollection.cs
- ContentElementAutomationPeer.cs
- PermissionAttributes.cs
- CircleHotSpot.cs