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
- ExecutorLocksHeldException.cs
- WinHttpWebProxyFinder.cs
- WindowsToolbarItemAsMenuItem.cs
- ButtonFieldBase.cs
- XsdDuration.cs
- EditorPartCollection.cs
- ChoiceConverter.cs
- __FastResourceComparer.cs
- clipboard.cs
- ValidationEventArgs.cs
- TextDecoration.cs
- Expressions.cs
- WebPartDeleteVerb.cs
- ResourceExpressionBuilder.cs
- MemberCollection.cs
- DetailsViewDeleteEventArgs.cs
- EasingKeyFrames.cs
- FontFamilyIdentifier.cs
- WindowsUpDown.cs
- DataContractSet.cs
- ProvidePropertyAttribute.cs
- ApplicationCommands.cs
- TypeElement.cs
- ObjectViewEntityCollectionData.cs
- Bidi.cs
- TraceContext.cs
- UntypedNullExpression.cs
- DataListItemEventArgs.cs
- IssuedTokenServiceCredential.cs
- Automation.cs
- RightNameExpirationInfoPair.cs
- PopupEventArgs.cs
- MenuEventArgs.cs
- GridView.cs
- TextContainer.cs
- SkipStoryboardToFill.cs
- DataGridTableCollection.cs
- ObjectListDesigner.cs
- DocumentPageView.cs
- TraceSource.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- CollectionContainer.cs
- RawKeyboardInputReport.cs
- AlignmentYValidation.cs
- ChangeDirector.cs
- GenericPrincipal.cs
- SqlProviderManifest.cs
- FormViewDeletedEventArgs.cs
- login.cs
- DefinitionBase.cs
- DataSourceXmlSerializer.cs
- PresentationAppDomainManager.cs
- TextBoxBase.cs
- MimeMapping.cs
- ITreeGenerator.cs
- GraphicsContainer.cs
- Contracts.cs
- FileSystemEventArgs.cs
- TryCatchDesigner.xaml.cs
- SourceFilter.cs
- BaseConfigurationRecord.cs
- BamlTreeUpdater.cs
- VideoDrawing.cs
- ContextQuery.cs
- InstalledFontCollection.cs
- TemplateBindingExpressionConverter.cs
- SolidColorBrush.cs
- LeftCellWrapper.cs
- GenericsInstances.cs
- MsmqInputSessionChannelListener.cs
- PassportAuthentication.cs
- SQLString.cs
- BitSet.cs
- XmlBinaryReader.cs
- DataGridLinkButton.cs
- CharKeyFrameCollection.cs
- CellParaClient.cs
- ReachDocumentReferenceCollectionSerializerAsync.cs
- KeyboardEventArgs.cs
- SqlIdentifier.cs
- TreeIterator.cs
- MetadataItemSerializer.cs
- PolyBezierSegment.cs
- MouseCaptureWithinProperty.cs
- Utilities.cs
- followingquery.cs
- TrackPointCollection.cs
- WebPartManager.cs
- HttpVersion.cs
- ParsedAttributeCollection.cs
- Update.cs
- _NetworkingPerfCounters.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- StrongNameHelpers.cs
- graph.cs
- SetterBase.cs
- KeyValueConfigurationCollection.cs
- CharEntityEncoderFallback.cs
- XmlSchemaSubstitutionGroup.cs
- ToolStripKeyboardHandlingService.cs