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
- DebugInfoGenerator.cs
- PseudoWebRequest.cs
- ArgIterator.cs
- WebPartMovingEventArgs.cs
- LingerOption.cs
- PathTooLongException.cs
- StateChangeEvent.cs
- TransformerTypeCollection.cs
- DataControlLinkButton.cs
- CommonXSendMessage.cs
- Duration.cs
- dataprotectionpermissionattribute.cs
- controlskin.cs
- GeneralTransformGroup.cs
- AttributeData.cs
- Ref.cs
- DataGridViewColumnStateChangedEventArgs.cs
- SessionState.cs
- DocumentGridPage.cs
- SiteOfOriginPart.cs
- PictureBox.cs
- TraversalRequest.cs
- SourceFileInfo.cs
- TreeViewCancelEvent.cs
- StorageModelBuildProvider.cs
- FixedDSBuilder.cs
- ExpressionEditor.cs
- TimeSpanConverter.cs
- ReadOnlyTernaryTree.cs
- UndirectedGraph.cs
- ExistsInCollection.cs
- WebPartConnectVerb.cs
- EventRoute.cs
- TemplateNodeContextMenu.cs
- PositiveTimeSpanValidator.cs
- DataServiceProcessingPipelineEventArgs.cs
- AdjustableArrowCap.cs
- InfoCardSymmetricCrypto.cs
- BadImageFormatException.cs
- EntityDataSourceSelectedEventArgs.cs
- DataSourceProvider.cs
- ResourceType.cs
- DataControlLinkButton.cs
- TagPrefixAttribute.cs
- AsmxEndpointPickerExtension.cs
- ActivationArguments.cs
- XmlNodeChangedEventArgs.cs
- Repeater.cs
- AutoCompleteStringCollection.cs
- StatusBarPanelClickEvent.cs
- UIElement.cs
- SnapshotChangeTrackingStrategy.cs
- IsolatedStorageFile.cs
- MultiView.cs
- FileDialogPermission.cs
- SettingsPropertyNotFoundException.cs
- IncomingWebResponseContext.cs
- TableRowsCollectionEditor.cs
- StorageComplexPropertyMapping.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- DataGridViewCheckBoxColumn.cs
- HtmlAnchor.cs
- SubstitutionResponseElement.cs
- FileDialogCustomPlaces.cs
- StreamGeometry.cs
- D3DImage.cs
- RequestCachePolicy.cs
- sqlcontext.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- errorpatternmatcher.cs
- GroupBox.cs
- IsolatedStorageException.cs
- DBSchemaRow.cs
- IndicShape.cs
- DataListItem.cs
- UnknownWrapper.cs
- UpdateEventArgs.cs
- RC2.cs
- RightsManagementEncryptedStream.cs
- AxHost.cs
- PathGradientBrush.cs
- PhysicalAddress.cs
- VisualStyleTypesAndProperties.cs
- TypeElement.cs
- ExpressionConverter.cs
- SmtpClient.cs
- DataGridRowDetailsEventArgs.cs
- KnownIds.cs
- TableLayoutSettingsTypeConverter.cs
- StreamGeometry.cs
- ResourceSetExpression.cs
- MarkupProperty.cs
- PriorityItem.cs
- TextEffectResolver.cs
- XmlUtf8RawTextWriter.cs
- Size3DValueSerializer.cs
- Attributes.cs
- ColorContextHelper.cs
- PolyBezierSegment.cs
- StreamWriter.cs