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
- Cursor.cs
- ManipulationInertiaStartingEventArgs.cs
- OleDbError.cs
- GlyphsSerializer.cs
- SimpleHandlerBuildProvider.cs
- BlockCollection.cs
- WebPartEditorOkVerb.cs
- ApplicationId.cs
- CngAlgorithmGroup.cs
- _NativeSSPI.cs
- EventSchemaTraceListener.cs
- GenerateHelper.cs
- HyperLinkDataBindingHandler.cs
- Int64KeyFrameCollection.cs
- CompilerGeneratedAttribute.cs
- TryCatchDesigner.xaml.cs
- EntityModelBuildProvider.cs
- GridViewCancelEditEventArgs.cs
- Rijndael.cs
- SettingsContext.cs
- Path.cs
- TextDecoration.cs
- DataControlExtensions.cs
- AnimationException.cs
- OleDbErrorCollection.cs
- SystemNetHelpers.cs
- PropertyToken.cs
- DateTimeEditor.cs
- ThicknessKeyFrameCollection.cs
- SessionKeyExpiredException.cs
- ZoomPercentageConverter.cs
- UTF8Encoding.cs
- SqlBinder.cs
- ProxyAttribute.cs
- OleDbDataReader.cs
- GlyphRunDrawing.cs
- ToolStripPanelRow.cs
- CancellationToken.cs
- PropertyRecord.cs
- ValueTypeFieldReference.cs
- Registration.cs
- SerializationFieldInfo.cs
- UserValidatedEventArgs.cs
- ExitEventArgs.cs
- Encoder.cs
- ToolBarTray.cs
- EtwTrackingParticipant.cs
- SecureConversationServiceCredential.cs
- Accessible.cs
- XmlReflectionImporter.cs
- dataprotectionpermission.cs
- ProfileService.cs
- EntityDesignerBuildProvider.cs
- FastPropertyAccessor.cs
- FontWeights.cs
- StylusPointPropertyId.cs
- ServiceAuthorizationManager.cs
- PeerNameResolver.cs
- datacache.cs
- SessionState.cs
- FlowLayoutSettings.cs
- WindowsGraphics2.cs
- PrimitiveType.cs
- StructuralComparisons.cs
- Debug.cs
- EventItfInfo.cs
- ReferenceSchema.cs
- FamilyTypeface.cs
- ComponentEvent.cs
- xmlfixedPageInfo.cs
- HttpContext.cs
- Int64Storage.cs
- GPRECT.cs
- DirectionalLight.cs
- ListDictionaryInternal.cs
- ExpressionDumper.cs
- ExeContext.cs
- FlowDecisionDesigner.xaml.cs
- ScriptingJsonSerializationSection.cs
- XmlSchemaIdentityConstraint.cs
- PointLight.cs
- Pen.cs
- ServiceModelDictionary.cs
- SiteMapNodeItem.cs
- WebPartHelpVerb.cs
- ComponentDesigner.cs
- DoubleAnimationUsingKeyFrames.cs
- ActivityDesigner.cs
- SqlMetaData.cs
- IDictionary.cs
- QueryRewriter.cs
- QueryContinueDragEventArgs.cs
- Point4D.cs
- __Filters.cs
- DataTable.cs
- WebContext.cs
- Rotation3D.cs
- MailSettingsSection.cs
- DictionarySurrogate.cs
- ThreadExceptionEvent.cs