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
- MSG.cs
- FixedSOMSemanticBox.cs
- XmlBinaryReaderSession.cs
- DeferredSelectedIndexReference.cs
- _ChunkParse.cs
- LingerOption.cs
- TemplateEditingService.cs
- CompareValidator.cs
- HtmlProps.cs
- CharConverter.cs
- TCEAdapterGenerator.cs
- BuildManagerHost.cs
- DbBuffer.cs
- AnonymousIdentificationSection.cs
- CollectionBase.cs
- WindowsRebar.cs
- SpotLight.cs
- ADConnectionHelper.cs
- FileChangesMonitor.cs
- DataGridViewCellStateChangedEventArgs.cs
- AdRotator.cs
- XhtmlBasicCalendarAdapter.cs
- CodeLabeledStatement.cs
- HttpRawResponse.cs
- SocketManager.cs
- MenuItemCollectionEditor.cs
- OracleParameter.cs
- LicenseProviderAttribute.cs
- AmbientProperties.cs
- ErrorEventArgs.cs
- DataStreamFromComStream.cs
- RandomNumberGenerator.cs
- WebPartMinimizeVerb.cs
- BufferedGraphicsManager.cs
- Enlistment.cs
- RegexFCD.cs
- DeploymentSectionCache.cs
- ColorAnimationBase.cs
- ReaderOutput.cs
- rsa.cs
- Table.cs
- TwoPhaseCommit.cs
- NamespaceEmitter.cs
- IsolatedStorage.cs
- ContainerSelectorActiveEvent.cs
- HTMLTextWriter.cs
- DiscoveryClientRequestChannel.cs
- RowParagraph.cs
- KeyValueSerializer.cs
- HttpGetClientProtocol.cs
- KoreanLunisolarCalendar.cs
- RouteItem.cs
- MLangCodePageEncoding.cs
- httpapplicationstate.cs
- Emitter.cs
- Char.cs
- _CacheStreams.cs
- Expressions.cs
- Rect3D.cs
- ObjectStateManagerMetadata.cs
- SamlAction.cs
- VisualState.cs
- ThicknessAnimationUsingKeyFrames.cs
- SizeAnimationBase.cs
- SvcMapFileSerializer.cs
- PrintingPermissionAttribute.cs
- Win32Exception.cs
- EmulateRecognizeCompletedEventArgs.cs
- XmlKeywords.cs
- DataListItemCollection.cs
- TypedTableGenerator.cs
- CryptoStream.cs
- ViewCellRelation.cs
- MessageEventSubscriptionService.cs
- TaiwanLunisolarCalendar.cs
- XsdSchemaFileEditor.cs
- BooleanSwitch.cs
- VisualStyleTypesAndProperties.cs
- SendSecurityHeaderElementContainer.cs
- StateWorkerRequest.cs
- EncoderParameter.cs
- SerialReceived.cs
- AssemblyAttributesGoHere.cs
- StyleXamlTreeBuilder.cs
- GuidConverter.cs
- UIntPtr.cs
- DeclarativeCatalogPart.cs
- SqlCacheDependencySection.cs
- DefaultPropertyAttribute.cs
- COM2PropertyDescriptor.cs
- Trigger.cs
- MobileTemplatedControlDesigner.cs
- CredentialCache.cs
- ServiceHostFactory.cs
- XXXInfos.cs
- TrustSection.cs
- FileUpload.cs
- SqlClientMetaDataCollectionNames.cs
- DataGridPageChangedEventArgs.cs
- SQLBytes.cs