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
- GroupItemAutomationPeer.cs
- CommandDevice.cs
- designeractionlistschangedeventargs.cs
- WebServiceEnumData.cs
- SqlAggregateChecker.cs
- TableProvider.cs
- SapiInterop.cs
- TextPointer.cs
- ObservableDictionary.cs
- DbMetaDataFactory.cs
- PackageDigitalSignature.cs
- SqlVersion.cs
- SqlCachedBuffer.cs
- Cloud.cs
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- PersonalizationEntry.cs
- CodeSubDirectoriesCollection.cs
- GridViewSortEventArgs.cs
- NotSupportedException.cs
- BamlLocalizationDictionary.cs
- SiteMapPath.cs
- UdpChannelListener.cs
- TokenBasedSetEnumerator.cs
- WebPartsSection.cs
- PageHandlerFactory.cs
- ReflectTypeDescriptionProvider.cs
- ApplicationId.cs
- Pkcs7Signer.cs
- ChangesetResponse.cs
- DataBindingCollection.cs
- sqlnorm.cs
- PreloadedPackages.cs
- ConfigurationConverterBase.cs
- PersonalizableAttribute.cs
- HashStream.cs
- SourceElementsCollection.cs
- ZipIOLocalFileHeader.cs
- SystemBrushes.cs
- TextDecoration.cs
- DataAdapter.cs
- RubberbandSelector.cs
- ControlPropertyNameConverter.cs
- CorePropertiesFilter.cs
- objectquery_tresulttype.cs
- TdsParserStateObject.cs
- ObjectDataSourceView.cs
- DocumentReference.cs
- InstanceDescriptor.cs
- FullTextBreakpoint.cs
- ListViewItem.cs
- DataContext.cs
- SequentialOutput.cs
- ValueProviderWrapper.cs
- UriWriter.cs
- RestHandlerFactory.cs
- FactoryRecord.cs
- DecimalConverter.cs
- ButtonPopupAdapter.cs
- DependencyStoreSurrogate.cs
- ControlBuilderAttribute.cs
- ClientProxyGenerator.cs
- CacheHelper.cs
- QilChoice.cs
- followingsibling.cs
- SmtpMail.cs
- RepeaterCommandEventArgs.cs
- DCSafeHandle.cs
- TextReturnReader.cs
- ToolStripItemDesigner.cs
- ElapsedEventArgs.cs
- ThrowHelper.cs
- List.cs
- Document.cs
- SystemIPv4InterfaceProperties.cs
- ConfigXmlElement.cs
- EntityContainerEmitter.cs
- RowParagraph.cs
- EntityDataSourceViewSchema.cs
- DependencyPropertyKey.cs
- SelectedDatesCollection.cs
- HostSecurityManager.cs
- FrugalMap.cs
- OleStrCAMarshaler.cs
- TokenBasedSetEnumerator.cs
- SchemaHelper.cs
- TypeDelegator.cs
- UIElementPropertyUndoUnit.cs
- MailMessage.cs
- SetterTriggerConditionValueConverter.cs
- SqlNodeAnnotation.cs
- UriTemplateVariableQueryValue.cs
- Transform3DGroup.cs
- NetMsmqSecurityElement.cs
- AuthenticatingEventArgs.cs
- MetadataItem.cs
- OutputCacheProfileCollection.cs
- FileVersion.cs
- ComplusTypeValidator.cs
- ColumnMapCopier.cs
- StructuredProperty.cs