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
- CLSCompliantAttribute.cs
- BasicKeyConstraint.cs
- ModuleBuilderData.cs
- GradientStopCollection.cs
- CqlQuery.cs
- ZipQueryOperator.cs
- TypeDescriptionProvider.cs
- LineServices.cs
- StackOverflowException.cs
- RegexGroup.cs
- coordinator.cs
- PrintingPermission.cs
- DataSourceView.cs
- SafeProcessHandle.cs
- EmptyReadOnlyDictionaryInternal.cs
- LineGeometry.cs
- Events.cs
- SupportsEventValidationAttribute.cs
- SettingsProviderCollection.cs
- BrowserTree.cs
- DbMetaDataFactory.cs
- WindowsTokenRoleProvider.cs
- FixedElement.cs
- SqlDataSourceCustomCommandPanel.cs
- _StreamFramer.cs
- HopperCache.cs
- RecordBuilder.cs
- OracleEncoding.cs
- BulletChrome.cs
- BindingSource.cs
- Utils.cs
- AuthenticationService.cs
- DiscoveryReference.cs
- FunctionMappingTranslator.cs
- InputEventArgs.cs
- Cell.cs
- PermissionSetTriple.cs
- GenericWebPart.cs
- Cursors.cs
- HtmlWindowCollection.cs
- Polyline.cs
- AppDomainProtocolHandler.cs
- WinFormsSpinner.cs
- SequenceFullException.cs
- BoolLiteral.cs
- InvokeProviderWrapper.cs
- IriParsingElement.cs
- AccessorTable.cs
- MulticastDelegate.cs
- Application.cs
- Visual.cs
- TrackBarDesigner.cs
- DeploymentSection.cs
- GenericAuthenticationEventArgs.cs
- ContainerUIElement3D.cs
- LayoutTable.cs
- SoapSchemaMember.cs
- QueryStringParameter.cs
- Model3DGroup.cs
- SharedConnectionInfo.cs
- IChannel.cs
- HtmlMeta.cs
- MimePart.cs
- isolationinterop.cs
- PolyBezierSegment.cs
- Resources.Designer.cs
- DataServiceQueryException.cs
- _ListenerAsyncResult.cs
- OleTxTransactionInfo.cs
- QuadraticBezierSegment.cs
- ClientScriptItemCollection.cs
- ActionMismatchAddressingException.cs
- CodeAttributeDeclaration.cs
- WebPartEditorApplyVerb.cs
- BamlResourceContent.cs
- GridItemProviderWrapper.cs
- AdornerPresentationContext.cs
- RouteData.cs
- ParameterCollectionEditor.cs
- ToolboxBitmapAttribute.cs
- HtmlTableCellCollection.cs
- DBConcurrencyException.cs
- ThreadStartException.cs
- MenuScrollingVisibilityConverter.cs
- EntityDataSourceDesignerHelper.cs
- KnownAssemblyEntry.cs
- AutomationPatternInfo.cs
- DocumentPropertiesDialog.cs
- SettingsPropertyNotFoundException.cs
- DataSourceCache.cs
- DefaultMemberAttribute.cs
- Size.cs
- ButtonBase.cs
- CustomValidator.cs
- CallbackCorrelationInitializer.cs
- CellCreator.cs
- ComplexBindingPropertiesAttribute.cs
- TagMapInfo.cs
- XmlSchemaParticle.cs
- HideDisabledControlAdapter.cs