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
- MemberPath.cs
- ProfileManager.cs
- FormatConvertedBitmap.cs
- ReplyChannelBinder.cs
- FusionWrap.cs
- TraceEventCache.cs
- EntityDataSourceDesigner.cs
- DisplayInformation.cs
- TreeViewBindingsEditor.cs
- QueryCacheManager.cs
- XhtmlConformanceSection.cs
- Marshal.cs
- UIElement.cs
- TextTreeInsertUndoUnit.cs
- CompiledRegexRunner.cs
- EventLogPermissionEntryCollection.cs
- HtmlMeta.cs
- Slider.cs
- TextProperties.cs
- StateRuntime.cs
- SQLDecimalStorage.cs
- QuestionEventArgs.cs
- PropertyConverter.cs
- WebResourceUtil.cs
- IApplicationTrustManager.cs
- Group.cs
- WebPartConnectionsEventArgs.cs
- Environment.cs
- CalendarSelectionChangedEventArgs.cs
- OutputWindow.cs
- TypeUsageBuilder.cs
- EpmContentSerializerBase.cs
- MenuTracker.cs
- DeviceContexts.cs
- TextRangeEditLists.cs
- ApplicationId.cs
- UMPAttributes.cs
- followingquery.cs
- DispatcherTimer.cs
- HttpResponseBase.cs
- NCryptSafeHandles.cs
- ProfileSection.cs
- ContentPlaceHolder.cs
- FixedPageStructure.cs
- DefaultMergeHelper.cs
- ClientSideQueueItem.cs
- BasicKeyConstraint.cs
- Hash.cs
- DesignColumnCollection.cs
- InnerItemCollectionView.cs
- PenThreadPool.cs
- ServiceX509SecurityTokenProvider.cs
- SchemaMapping.cs
- ParenthesizePropertyNameAttribute.cs
- CodePageUtils.cs
- DrawingBrush.cs
- CommandExpr.cs
- CodeCompiler.cs
- ConsumerConnectionPointCollection.cs
- Socket.cs
- TreeSet.cs
- AutomationPatternInfo.cs
- sqlser.cs
- GridView.cs
- VisualProxy.cs
- EntityDataSourceContextCreatingEventArgs.cs
- NestedContainer.cs
- URLIdentityPermission.cs
- WebBrowsableAttribute.cs
- XmlSchemaAnnotation.cs
- KeyTimeConverter.cs
- RectangleGeometry.cs
- SqlUserDefinedAggregateAttribute.cs
- LinqDataSourceDeleteEventArgs.cs
- Quaternion.cs
- WebBrowserUriTypeConverter.cs
- XmlTypeAttribute.cs
- RemoteWebConfigurationHostServer.cs
- EntityException.cs
- DataService.cs
- XmlReflectionMember.cs
- SerializationEventsCache.cs
- TreeViewImageKeyConverter.cs
- MgmtConfigurationRecord.cs
- Expression.cs
- PolicyStatement.cs
- HeaderElement.cs
- DocumentOrderQuery.cs
- TagPrefixInfo.cs
- DataPagerFieldItem.cs
- XmlSerializer.cs
- TreeBuilderXamlTranslator.cs
- ComponentChangingEvent.cs
- EntityDataSourceReferenceGroup.cs
- WpfKnownMember.cs
- DefaultAsyncDataDispatcher.cs
- GroupedContextMenuStrip.cs
- HtmlElement.cs
- DataControlFieldHeaderCell.cs
- TextSegment.cs