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
- StdValidatorsAndConverters.cs
- DataGridViewRowHeaderCell.cs
- C14NUtil.cs
- XmlReader.cs
- SchemaCreator.cs
- HostUtils.cs
- ObjectSet.cs
- QueryCacheKey.cs
- EditorPartCollection.cs
- COM2ComponentEditor.cs
- MaskDescriptors.cs
- AppModelKnownContentFactory.cs
- SqlRetyper.cs
- CalendarData.cs
- MimeTypeMapper.cs
- CompareInfo.cs
- ListArgumentProvider.cs
- MessageDecoder.cs
- Rotation3DKeyFrameCollection.cs
- DataGridViewComboBoxColumn.cs
- FunctionMappingTranslator.cs
- URLAttribute.cs
- SinglePageViewer.cs
- DriveInfo.cs
- ActivityDesignerLayoutSerializers.cs
- SqlProviderManifest.cs
- EntityClientCacheKey.cs
- IteratorDescriptor.cs
- BitmapFrameEncode.cs
- Selection.cs
- ClientTargetSection.cs
- RectAnimationBase.cs
- MinimizableAttributeTypeConverter.cs
- WindowProviderWrapper.cs
- SafeLocalMemHandle.cs
- ProvidePropertyAttribute.cs
- BackEase.cs
- EnumBuilder.cs
- NameValuePair.cs
- HostedHttpContext.cs
- NullRuntimeConfig.cs
- WizardForm.cs
- VirtualPath.cs
- WithStatement.cs
- StylusPoint.cs
- SqlBulkCopyColumnMappingCollection.cs
- UIntPtr.cs
- X509ScopedServiceCertificateElement.cs
- ColumnClickEvent.cs
- XmlSchemaSimpleType.cs
- dbenumerator.cs
- VectorValueSerializer.cs
- LinqDataSourceContextData.cs
- InstrumentationTracker.cs
- QueryConverter.cs
- DetailsViewRow.cs
- MenuStrip.cs
- StringSource.cs
- IndexedWhereQueryOperator.cs
- PresentationUIStyleResources.cs
- ActivationArguments.cs
- SQLSingleStorage.cs
- HttpHandlerAction.cs
- ClaimTypes.cs
- DatagridviewDisplayedBandsData.cs
- LinkDescriptor.cs
- LayoutInformation.cs
- NativeObjectSecurity.cs
- FamilyTypeface.cs
- StringBuilder.cs
- SQLDoubleStorage.cs
- X509ServiceCertificateAuthenticationElement.cs
- QuestionEventArgs.cs
- SplitterEvent.cs
- CheckPair.cs
- SelectionProcessor.cs
- XmlDataProvider.cs
- IdentitySection.cs
- EncoderBestFitFallback.cs
- Literal.cs
- HttpClientChannel.cs
- SystemColors.cs
- WaitHandle.cs
- DLinqColumnProvider.cs
- SignatureToken.cs
- DataGridViewRowPostPaintEventArgs.cs
- UpdateDelegates.Generated.cs
- WebPartZoneAutoFormat.cs
- SerializationFieldInfo.cs
- safePerfProviderHandle.cs
- SqlGatherProducedAliases.cs
- IsolationInterop.cs
- BufferBuilder.cs
- CapiSafeHandles.cs
- GeneratedContractType.cs
- Vector3DValueSerializer.cs
- TextElementAutomationPeer.cs
- OracleInternalConnection.cs
- RotateTransform.cs
- BasicHttpSecurityElement.cs