Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Activities / LocalService / DataExchangeServiceBinder.cs / 1305376 / DataExchangeServiceBinder.cs
using System; using System.Diagnostics; using System.Collections; using System.Collections.Generic; using System.Text; using System.Reflection; using System.Runtime.Serialization; using System.Runtime.Remoting; using System.Runtime.Remoting.Messaging; using System.Runtime.Remoting.Proxies; using System.Workflow.ComponentModel; using System.Workflow.Runtime; using System.Workflow.Runtime.Hosting; using System.Security.Permissions; using System.Globalization; namespace System.Workflow.Activities { internal sealed class ExternalDataExchangeBinder : Binder { Binder defltBinder; internal ExternalDataExchangeBinder() { defltBinder = Type.DefaultBinder; } public override MethodBase BindToMethod(BindingFlags bindingAttr, MethodBase[] match, ref object[] args, ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] names, out object state) { Object[] argsCopy = new Object[args.Length]; args.CopyTo(argsCopy, 0); state = null; try { return defltBinder.BindToMethod(bindingAttr, match, ref args, modifiers, culture, names, out state); } catch (MissingMethodException) //5% case where when passed null for params. { if (match != null && match.Length != 0) { for (int i = 0; i < match.Length; ++i) { ParameterInfo[] methodParams = match[i].GetParameters(); if (methodParams.Length == argsCopy.Length) { for (int j = 0; j < methodParams.Length; ++j) { if (!methodParams[j].ParameterType.IsInstanceOfType(argsCopy[j])) { if (!(methodParams[j].ParameterType.IsArray && argsCopy[j] == null)) break; } if (j + 1 == methodParams.Length) return match[i]; } } } } } return null; } public override FieldInfo BindToField( BindingFlags bindingAttr, FieldInfo[] match, object value, CultureInfo culture) { return defltBinder.BindToField(bindingAttr, match, value, culture); } public override MethodBase SelectMethod(BindingFlags bindingAttr, MethodBase[] match, Type[] types, ParameterModifier[] modifiers) { return defltBinder.SelectMethod(bindingAttr, match, types, modifiers); } public override PropertyInfo SelectProperty(BindingFlags bindingAttr, PropertyInfo[] match, Type returnType, Type[] indexes, ParameterModifier[] modifiers ) { return defltBinder.SelectProperty(bindingAttr, match, returnType, indexes, modifiers); } public override object ChangeType(object value, Type type, CultureInfo culture ) { return defltBinder.ChangeType(value, type, culture); } public override void ReorderArgumentArray(ref object[] args, object state ) { defltBinder.ReorderArgumentArray(ref args, state); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Diagnostics; using System.Collections; using System.Collections.Generic; using System.Text; using System.Reflection; using System.Runtime.Serialization; using System.Runtime.Remoting; using System.Runtime.Remoting.Messaging; using System.Runtime.Remoting.Proxies; using System.Workflow.ComponentModel; using System.Workflow.Runtime; using System.Workflow.Runtime.Hosting; using System.Security.Permissions; using System.Globalization; namespace System.Workflow.Activities { internal sealed class ExternalDataExchangeBinder : Binder { Binder defltBinder; internal ExternalDataExchangeBinder() { defltBinder = Type.DefaultBinder; } public override MethodBase BindToMethod(BindingFlags bindingAttr, MethodBase[] match, ref object[] args, ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] names, out object state) { Object[] argsCopy = new Object[args.Length]; args.CopyTo(argsCopy, 0); state = null; try { return defltBinder.BindToMethod(bindingAttr, match, ref args, modifiers, culture, names, out state); } catch (MissingMethodException) //5% case where when passed null for params. { if (match != null && match.Length != 0) { for (int i = 0; i < match.Length; ++i) { ParameterInfo[] methodParams = match[i].GetParameters(); if (methodParams.Length == argsCopy.Length) { for (int j = 0; j < methodParams.Length; ++j) { if (!methodParams[j].ParameterType.IsInstanceOfType(argsCopy[j])) { if (!(methodParams[j].ParameterType.IsArray && argsCopy[j] == null)) break; } if (j + 1 == methodParams.Length) return match[i]; } } } } } return null; } public override FieldInfo BindToField( BindingFlags bindingAttr, FieldInfo[] match, object value, CultureInfo culture) { return defltBinder.BindToField(bindingAttr, match, value, culture); } public override MethodBase SelectMethod(BindingFlags bindingAttr, MethodBase[] match, Type[] types, ParameterModifier[] modifiers) { return defltBinder.SelectMethod(bindingAttr, match, types, modifiers); } public override PropertyInfo SelectProperty(BindingFlags bindingAttr, PropertyInfo[] match, Type returnType, Type[] indexes, ParameterModifier[] modifiers ) { return defltBinder.SelectProperty(bindingAttr, match, returnType, indexes, modifiers); } public override object ChangeType(object value, Type type, CultureInfo culture ) { return defltBinder.ChangeType(value, type, culture); } public override void ReorderArgumentArray(ref object[] args, object state ) { defltBinder.ReorderArgumentArray(ref args, state); } } } // 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
- WindowsRichEditRange.cs
- TableRowCollection.cs
- WebServiceEnumData.cs
- HandlerMappingMemo.cs
- X509Extension.cs
- ResolveNameEventArgs.cs
- ManifestResourceInfo.cs
- InstanceDataCollection.cs
- CopyAction.cs
- TreeViewDesigner.cs
- TdsValueSetter.cs
- ToolBarTray.cs
- Delay.cs
- FtpWebRequest.cs
- TemplateGroupCollection.cs
- Debug.cs
- StringBuilder.cs
- LogRecordSequence.cs
- FixedDocumentSequencePaginator.cs
- BigInt.cs
- MessageQueueEnumerator.cs
- DataRowChangeEvent.cs
- MinimizableAttributeTypeConverter.cs
- TypeBuilderInstantiation.cs
- ResourceContainer.cs
- QueryResults.cs
- DesignerAdapterUtil.cs
- QilLiteral.cs
- DisplayInformation.cs
- OutputScopeManager.cs
- MetadataItemSerializer.cs
- TagPrefixInfo.cs
- BamlLocalizabilityResolver.cs
- HtmlInputCheckBox.cs
- HtmlUtf8RawTextWriter.cs
- WindowInteropHelper.cs
- BidPrivateBase.cs
- BufferedReadStream.cs
- ObjectDataSourceStatusEventArgs.cs
- StringWriter.cs
- LinkTarget.cs
- MsmqDiagnostics.cs
- PolicyImporterElementCollection.cs
- ArglessEventHandlerProxy.cs
- MenuItemCollectionEditor.cs
- CollectionChangeEventArgs.cs
- DynamicPropertyReader.cs
- DataSourceGroupCollection.cs
- EntityDescriptor.cs
- _AuthenticationState.cs
- ControlBindingsCollection.cs
- VirtualPathData.cs
- DependencyPropertyHelper.cs
- ScrollItemProviderWrapper.cs
- CallbackWrapper.cs
- XmlLoader.cs
- VideoDrawing.cs
- DataColumnMappingCollection.cs
- NullableIntMinMaxAggregationOperator.cs
- MeasurementDCInfo.cs
- RegexCapture.cs
- sqlnorm.cs
- MenuItemBinding.cs
- GeometryModel3D.cs
- SymLanguageType.cs
- RIPEMD160Managed.cs
- loginstatus.cs
- InvalidFilterCriteriaException.cs
- Module.cs
- InstanceNormalEvent.cs
- ZoomComboBox.cs
- SizeLimitedCache.cs
- StackSpiller.Temps.cs
- TickBar.cs
- FileResponseElement.cs
- BaseServiceProvider.cs
- ModuleBuilderData.cs
- TraceContextEventArgs.cs
- SqlOuterApplyReducer.cs
- WinInetCache.cs
- DataGridViewHitTestInfo.cs
- PartialTrustVisibleAssemblyCollection.cs
- ObjectViewQueryResultData.cs
- TextEditorMouse.cs
- RoutedCommand.cs
- Margins.cs
- CollectionViewGroup.cs
- DataGridCell.cs
- RedirectionProxy.cs
- XPathBinder.cs
- Vector3DAnimation.cs
- MetricEntry.cs
- ReadOnlyMetadataCollection.cs
- propertyentry.cs
- OdbcEnvironmentHandle.cs
- Token.cs
- CustomBindingElementCollection.cs
- SlipBehavior.cs
- XmlSubtreeReader.cs
- RuntimeHandles.cs