Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / Mobile / DeviceFilterDictionary.cs / 1305376 / DeviceFilterDictionary.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Mobile { using System.Web; using System.Collections; using System.Reflection; using System.Diagnostics; using System.ComponentModel; [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")] internal class DeviceFilterDictionary { internal class ComparisonEvaluator { internal readonly String capabilityName; internal readonly String capabilityArgument; internal ComparisonEvaluator(String name, String argument) { Debug.Assert(name != null); capabilityName = name; capabilityArgument = argument; } } private Hashtable _comparisonEvaluators = null; private Hashtable _delegateEvaluators = null; internal DeviceFilterDictionary() { _comparisonEvaluators = new Hashtable(); _delegateEvaluators = new Hashtable(); } internal DeviceFilterDictionary(DeviceFilterDictionary original) { _comparisonEvaluators = (Hashtable)original._comparisonEvaluators.Clone(); _delegateEvaluators = (Hashtable)original._delegateEvaluators.Clone(); } internal void AddCapabilityDelegate(String delegateName, MobileCapabilities.EvaluateCapabilitiesDelegate evaluator) { _delegateEvaluators[delegateName] = evaluator; } private void CheckForComparisonDelegateLoops(String delegateName) { String nextDelegateName = delegateName; Hashtable alreadyReferencedDelegates = new Hashtable(); while(true) { ComparisonEvaluator nextComparisonEvaluator = (ComparisonEvaluator)_comparisonEvaluators[nextDelegateName]; if(nextComparisonEvaluator == null) { break; } if(alreadyReferencedDelegates.Contains(nextDelegateName)) { String msg = SR.GetString(SR.DevFiltDict_FoundLoop, nextComparisonEvaluator.capabilityName, delegateName); throw new Exception(msg); } alreadyReferencedDelegates[nextDelegateName] = null; nextDelegateName = nextComparisonEvaluator.capabilityName; } } internal void AddComparisonDelegate(String delegateName, String comparisonName, String argument) { _comparisonEvaluators[delegateName] = new ComparisonEvaluator(comparisonName, argument); CheckForComparisonDelegateLoops(delegateName); } internal bool FindComparisonEvaluator(String evaluatorName, out String capabilityName, out String capabilityArgument) { capabilityName = null; capabilityArgument = null; ComparisonEvaluator evaluator = (ComparisonEvaluator)_comparisonEvaluators[evaluatorName]; if(evaluator == null) { return false; } capabilityName = evaluator.capabilityName; capabilityArgument = evaluator.capabilityArgument; return true; } internal bool FindDelegateEvaluator(String evaluatorName, out MobileCapabilities.EvaluateCapabilitiesDelegate evaluatorDelegate) { evaluatorDelegate = null; MobileCapabilities.EvaluateCapabilitiesDelegate evaluator; evaluator = (MobileCapabilities.EvaluateCapabilitiesDelegate) _delegateEvaluators[evaluatorName]; if(evaluator == null) { return false; } evaluatorDelegate = evaluator; return true; } internal bool IsComparisonEvaluator(String evaluatorName) { return _comparisonEvaluators.Contains(evaluatorName); } internal bool IsDelegateEvaluator(String evaluatorName) { return _delegateEvaluators.Contains(evaluatorName); } } } // 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
- GlyphTypeface.cs
- Parameter.cs
- ContentPlaceHolder.cs
- IconBitmapDecoder.cs
- TemplatePartAttribute.cs
- DataGridViewBand.cs
- DateTimeConverter2.cs
- SoapWriter.cs
- CompositeActivityDesigner.cs
- ImageClickEventArgs.cs
- UserControlBuildProvider.cs
- PersistChildrenAttribute.cs
- XmlSchemaRedefine.cs
- ConnectionStringSettings.cs
- TextEndOfParagraph.cs
- GridViewUpdatedEventArgs.cs
- ModelFactory.cs
- ContentElement.cs
- EntityDataSourceWrapper.cs
- EntityDataSourceColumn.cs
- NativeMethods.cs
- QueryInterceptorAttribute.cs
- SingleBodyParameterMessageFormatter.cs
- ValueTypeFixupInfo.cs
- XmlDeclaration.cs
- ProfessionalColors.cs
- LocatorPart.cs
- COM2EnumConverter.cs
- DataReceivedEventArgs.cs
- ChangeTracker.cs
- UnsafeNativeMethods.cs
- SqlClientMetaDataCollectionNames.cs
- SessionSwitchEventArgs.cs
- SqlDataSourceAdvancedOptionsForm.cs
- FormViewPageEventArgs.cs
- InsufficientExecutionStackException.cs
- TextPointerBase.cs
- SrgsRule.cs
- FastPropertyAccessor.cs
- ViewCellSlot.cs
- Application.cs
- Int32CollectionValueSerializer.cs
- CodeGroup.cs
- PageParserFilter.cs
- XmlFormatExtensionAttribute.cs
- TagNameToTypeMapper.cs
- DataColumnMappingCollection.cs
- PackWebRequestFactory.cs
- OdbcParameter.cs
- XmlSchemaAnyAttribute.cs
- SafeArchiveContext.cs
- InteropTrackingRecord.cs
- ChannelServices.cs
- FixedHighlight.cs
- ItemCollection.cs
- EmbeddedMailObjectsCollection.cs
- GridViewCancelEditEventArgs.cs
- ManifestResourceInfo.cs
- GeneralTransform2DTo3D.cs
- LicenseProviderAttribute.cs
- SimpleTypesSurrogate.cs
- UntrustedRecipientException.cs
- TouchPoint.cs
- ImageConverter.cs
- RegistrySecurity.cs
- UnmanagedHandle.cs
- SnapLine.cs
- SystemTcpStatistics.cs
- DbConnectionPool.cs
- GACIdentityPermission.cs
- BinaryExpression.cs
- cookieexception.cs
- BaseCodeDomTreeGenerator.cs
- CustomTypeDescriptor.cs
- QilFunction.cs
- MobileCategoryAttribute.cs
- PathGradientBrush.cs
- AppSettingsSection.cs
- ListView.cs
- DesignerSerializationOptionsAttribute.cs
- KerberosSecurityTokenParameters.cs
- RSAProtectedConfigurationProvider.cs
- SerialPort.cs
- CommandEventArgs.cs
- HMACMD5.cs
- Parameter.cs
- IndicFontClient.cs
- ListViewInsertionMark.cs
- NGCSerializerAsync.cs
- TitleStyle.cs
- MailDefinitionBodyFileNameEditor.cs
- XsltArgumentList.cs
- ControlBuilder.cs
- Publisher.cs
- DbProviderFactoriesConfigurationHandler.cs
- CounterSetInstance.cs
- GroupBoxRenderer.cs
- SiteMapDataSource.cs
- SelectionItemPattern.cs
- RoleBoolean.cs