Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / MS / Internal / Automation / ValueProviderWrapper.cs / 1305600 / ValueProviderWrapper.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Value pattern provider wrapper for WCP // // History: // 07/21/2003 : BrendanM Ported to WCP // //--------------------------------------------------------------------------- using System; using System.Windows.Threading; using System.Windows.Media; using System.Windows.Automation; using System.Windows.Automation.Provider; using System.Windows.Automation.Peers; namespace MS.Internal.Automation { // Automation/WCP Wrapper class: Implements that UIAutomation I...Provider // interface, and calls through to a WCP AutomationPeer which implements the corresponding // I...Provider inteface. Marshalls the call from the RPC thread onto the // target AutomationPeer's context. // // Class has two major parts to it: // * Implementation of the I...Provider, which uses Dispatcher.Invoke // to call a private method (lives in second half of the class) via a delegate, // if necessary, packages any params into an object param. Return type of Invoke // must be cast from object to appropriate type. // * private methods - one for each interface entry point - which get called back // on the right context. These call through to the peer that's actually // implenting the I...Provider version of the interface. internal class ValueProviderWrapper: MarshalByRefObject, IValueProvider { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors private ValueProviderWrapper( AutomationPeer peer, IValueProvider iface ) { _peer = peer; _iface = iface; } #endregion Constructors //------------------------------------------------------ // // Interface IValueProvider // //----------------------------------------------------- #region Interface IValueProvider public void SetValue( string val ) { ElementUtil.Invoke( _peer, new DispatcherOperationCallback( SetValueInternal ), val ); } public string Value { get { return (string) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetValue ), null ); } } public bool IsReadOnly { get { return (bool) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetIsReadOnly ), null ); } } #endregion Interface IValueProvider //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ #region Internal Methods internal static object Wrap( AutomationPeer peer, object iface ) { return new ValueProviderWrapper( peer, (IValueProvider) iface ); } #endregion Internal Methods //----------------------------------------------------- // // Private Methods // //------------------------------------------------------ #region Private Methods private object SetValueInternal( object arg ) { _iface.SetValue( (string)arg ); return null; } private object GetValue( object unused ) { return _iface.Value; } private object GetIsReadOnly( object unused ) { return _iface.IsReadOnly; } #endregion Private Methods //----------------------------------------------------- // // Private Fields // //----------------------------------------------------- #region Private Fields private AutomationPeer _peer; private IValueProvider _iface; #endregion Private Fields } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Value pattern provider wrapper for WCP // // History: // 07/21/2003 : BrendanM Ported to WCP // //--------------------------------------------------------------------------- using System; using System.Windows.Threading; using System.Windows.Media; using System.Windows.Automation; using System.Windows.Automation.Provider; using System.Windows.Automation.Peers; namespace MS.Internal.Automation { // Automation/WCP Wrapper class: Implements that UIAutomation I...Provider // interface, and calls through to a WCP AutomationPeer which implements the corresponding // I...Provider inteface. Marshalls the call from the RPC thread onto the // target AutomationPeer's context. // // Class has two major parts to it: // * Implementation of the I...Provider, which uses Dispatcher.Invoke // to call a private method (lives in second half of the class) via a delegate, // if necessary, packages any params into an object param. Return type of Invoke // must be cast from object to appropriate type. // * private methods - one for each interface entry point - which get called back // on the right context. These call through to the peer that's actually // implenting the I...Provider version of the interface. internal class ValueProviderWrapper: MarshalByRefObject, IValueProvider { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors private ValueProviderWrapper( AutomationPeer peer, IValueProvider iface ) { _peer = peer; _iface = iface; } #endregion Constructors //------------------------------------------------------ // // Interface IValueProvider // //----------------------------------------------------- #region Interface IValueProvider public void SetValue( string val ) { ElementUtil.Invoke( _peer, new DispatcherOperationCallback( SetValueInternal ), val ); } public string Value { get { return (string) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetValue ), null ); } } public bool IsReadOnly { get { return (bool) ElementUtil.Invoke( _peer, new DispatcherOperationCallback( GetIsReadOnly ), null ); } } #endregion Interface IValueProvider //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ #region Internal Methods internal static object Wrap( AutomationPeer peer, object iface ) { return new ValueProviderWrapper( peer, (IValueProvider) iface ); } #endregion Internal Methods //----------------------------------------------------- // // Private Methods // //------------------------------------------------------ #region Private Methods private object SetValueInternal( object arg ) { _iface.SetValue( (string)arg ); return null; } private object GetValue( object unused ) { return _iface.Value; } private object GetIsReadOnly( object unused ) { return _iface.IsReadOnly; } #endregion Private Methods //----------------------------------------------------- // // Private Fields // //----------------------------------------------------- #region Private Fields private AutomationPeer _peer; private IValueProvider _iface; #endregion Private Fields } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ISAPIWorkerRequest.cs
- StagingAreaInputItem.cs
- AsyncWaitHandle.cs
- EventLog.cs
- StylusPointDescription.cs
- DataStreamFromComStream.cs
- CmsInterop.cs
- Activity.cs
- ConfigXmlSignificantWhitespace.cs
- ValidationSummary.cs
- InvalidFilterCriteriaException.cs
- InfoCardTrace.cs
- __TransparentProxy.cs
- PartialCachingAttribute.cs
- HtmlControlPersistable.cs
- HtmlSelect.cs
- SolidColorBrush.cs
- FrugalMap.cs
- CustomWebEventKey.cs
- ValidationErrorEventArgs.cs
- Script.cs
- CellIdBoolean.cs
- ForeignConstraint.cs
- ContextMenuAutomationPeer.cs
- UnionCodeGroup.cs
- TimelineGroup.cs
- MDIControlStrip.cs
- ExtractorMetadata.cs
- ConfigurationElementProperty.cs
- SQlBooleanStorage.cs
- SettingsPropertyValue.cs
- DesignerTransactionCloseEvent.cs
- SqlExpressionNullability.cs
- BufferModeSettings.cs
- DoubleAnimationClockResource.cs
- SimpleBitVector32.cs
- PreProcessInputEventArgs.cs
- ExtenderProvidedPropertyAttribute.cs
- Hashtable.cs
- RequestQueue.cs
- AdapterDictionary.cs
- TypeInitializationException.cs
- SpoolingTaskBase.cs
- Quaternion.cs
- templategroup.cs
- WebPartConnection.cs
- SecurityContext.cs
- WebColorConverter.cs
- RegexRunner.cs
- SqlCacheDependency.cs
- SubclassTypeValidator.cs
- BitmapPalette.cs
- Char.cs
- IdleTimeoutMonitor.cs
- ParserStack.cs
- BindingValueChangedEventArgs.cs
- CharacterString.cs
- StackOverflowException.cs
- DbParameterCollectionHelper.cs
- LeaseManager.cs
- WebPartConnectionsCancelVerb.cs
- EpmSourceTree.cs
- InputReport.cs
- documentsequencetextcontainer.cs
- DataObject.cs
- RuleInfoComparer.cs
- DBSchemaRow.cs
- ExtensionWindowResizeGrip.cs
- PriorityQueue.cs
- DataRecordObjectView.cs
- InheritanceRules.cs
- EntitySqlQueryCacheKey.cs
- TextElementAutomationPeer.cs
- PathFigureCollection.cs
- securitycriticaldataformultiplegetandset.cs
- BaseTreeIterator.cs
- RtfToXamlReader.cs
- MethodExpr.cs
- DbConnectionInternal.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- DataObjectEventArgs.cs
- FacetDescription.cs
- BoundField.cs
- CodeIdentifiers.cs
- Workspace.cs
- ColumnPropertiesGroup.cs
- XmlAnyAttributeAttribute.cs
- FocusWithinProperty.cs
- SplitterEvent.cs
- SimpleMailWebEventProvider.cs
- LoginCancelEventArgs.cs
- ItemList.cs
- HGlobalSafeHandle.cs
- PanelStyle.cs
- BookmarkScopeInfo.cs
- Wildcard.cs
- DelegatedStream.cs
- DrawingContext.cs
- HttpWebRequestElement.cs
- CollectionContainer.cs