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
- Base64Stream.cs
- CacheMemory.cs
- SimpleFieldTemplateUserControl.cs
- Metafile.cs
- OrderedDictionary.cs
- DomainUpDown.cs
- ProbeDuplexCD1AsyncResult.cs
- NotImplementedException.cs
- WizardForm.cs
- SourceSwitch.cs
- PolygonHotSpot.cs
- PlainXmlWriter.cs
- WindowsListViewSubItem.cs
- ReflectionTypeLoadException.cs
- ToolStripDesigner.cs
- CodeExpressionStatement.cs
- SequenceFullException.cs
- HostVisual.cs
- DataGridViewRowCollection.cs
- XmlSchemaExporter.cs
- SystemUdpStatistics.cs
- ConfigurationProviderException.cs
- ObjectViewListener.cs
- SoapEnvelopeProcessingElement.cs
- ReceiveContextCollection.cs
- ListBindingHelper.cs
- PrimarySelectionAdorner.cs
- HatchBrush.cs
- QilNode.cs
- LoginName.cs
- CodeAttributeArgument.cs
- Visitors.cs
- HyperlinkAutomationPeer.cs
- Math.cs
- XamlStream.cs
- NonSerializedAttribute.cs
- IpcClientChannel.cs
- ZipPackagePart.cs
- WindowsStreamSecurityElement.cs
- XmlDataSourceDesigner.cs
- IssuedTokenServiceElement.cs
- ToolStripTextBox.cs
- ComponentChangedEvent.cs
- XmlJsonWriter.cs
- PerformanceCounterManager.cs
- BindUriHelper.cs
- HttpAsyncResult.cs
- CodeMemberProperty.cs
- TimeSpanSecondsConverter.cs
- AccessText.cs
- LayoutSettings.cs
- TemplateField.cs
- MenuStrip.cs
- Bitmap.cs
- DataGridRowClipboardEventArgs.cs
- DeleteMemberBinder.cs
- TreeView.cs
- QueueNameHelper.cs
- TableRowGroupCollection.cs
- CapiSafeHandles.cs
- safex509handles.cs
- UnsafeCollabNativeMethods.cs
- oledbconnectionstring.cs
- FormsIdentity.cs
- HandledMouseEvent.cs
- _FtpControlStream.cs
- FunctionQuery.cs
- PropertyEmitter.cs
- Evidence.cs
- ViewManager.cs
- ServiceObjectContainer.cs
- BackgroundWorker.cs
- InheritanceRules.cs
- Pointer.cs
- Authorization.cs
- X509ChainElement.cs
- InvariantComparer.cs
- storepermission.cs
- UInt64.cs
- ServiceBehaviorElementCollection.cs
- HttpResponseWrapper.cs
- DbProviderManifest.cs
- HtmlHead.cs
- NetCodeGroup.cs
- SymbolType.cs
- ThemeDirectoryCompiler.cs
- CodeTypeDeclarationCollection.cs
- GenericTypeParameterBuilder.cs
- OneOf.cs
- FormatterServices.cs
- Expressions.cs
- TagMapInfo.cs
- SqlCacheDependencySection.cs
- CompilationRelaxations.cs
- SymbolMethod.cs
- ChainOfResponsibility.cs
- WebPartManager.cs
- XhtmlTextWriter.cs
- AssemblyBuilder.cs
- XmlMemberMapping.cs