Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Statements / InvokeMethod.cs / 1305376 / InvokeMethod.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Statements { using System.Activities.Validation; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.Collections; using System.Windows.Markup; using System.Runtime; [ContentProperty("Parameters")] public sealed class InvokeMethod : AsyncCodeActivity { Collectionparameters; Collection genericTypeArguments; MethodResolver methodResolver; MethodExecutor methodExecutor; RuntimeArgument resultArgument; public InvokeMethod() : base() { } public Collection GenericTypeArguments { get { if (this.genericTypeArguments == null) { this.genericTypeArguments = new ValidatingCollection { // disallow null values OnAddValidationCallback = item => { if (item == null) { throw FxTrace.Exception.ArgumentNull("item"); } } }; } return this.genericTypeArguments; } } public string MethodName { get; set; } public Collection Parameters { get { if (this.parameters == null) { this.parameters = new ValidatingCollection { // disallow null values OnAddValidationCallback = item => { if (item == null) { throw FxTrace.Exception.ArgumentNull("item"); } } }; } return this.parameters; } } [DefaultValue(null)] public OutArgument Result { get; set; } [DefaultValue(null)] public InArgument TargetObject { get; set; } [DefaultValue(null)] public Type TargetType { get; set; } [DefaultValue(false)] public bool RunAsynchronously { get; set; } protected override void CacheMetadata(CodeActivityMetadata metadata) { Collection arguments = new Collection (); Type targetObjectType = TypeHelper.ObjectType; if (this.TargetObject != null) { targetObjectType = this.TargetObject.ArgumentType; } RuntimeArgument targetObjectArgument = new RuntimeArgument("TargetObject", targetObjectType, ArgumentDirection.In); metadata.Bind(this.TargetObject, targetObjectArgument); arguments.Add(targetObjectArgument); Type resultType = TypeHelper.ObjectType; if (this.Result != null) { resultType = this.Result.ArgumentType; } this.resultArgument = new RuntimeArgument("Result", resultType, ArgumentDirection.Out); metadata.Bind(this.Result, this.resultArgument); arguments.Add(resultArgument); // Parameters are named according to MethodInfo name if DetermineMethodInfo // succeeds, otherwise arbitrary names are used. this.methodResolver = CreateMethodResolver(); this.methodResolver.DetermineMethodInfo(metadata, out this.methodExecutor); this.methodResolver.RegisterParameters(arguments); metadata.SetArgumentsCollection(arguments); this.methodResolver.Trace(); if (this.methodExecutor != null) { this.methodExecutor.Trace(this); } } protected override IAsyncResult BeginExecute(AsyncCodeActivityContext context, AsyncCallback callback, object state) { return this.methodExecutor.BeginExecuteMethod(context, callback, state); } protected override void EndExecute(AsyncCodeActivityContext context, IAsyncResult result) { this.methodExecutor.EndExecuteMethod(context, result); } MethodResolver CreateMethodResolver() { MethodResolver resolver = new MethodResolver { MethodName = this.MethodName, RunAsynchronously = this.RunAsynchronously, TargetType = this.TargetType, TargetObject = this.TargetObject, GenericTypeArguments = this.GenericTypeArguments, Parameters = this.Parameters, Result = this.resultArgument, Parent = this }; if (this.Result != null) { resolver.ResultType = this.Result.ArgumentType; } else { resolver.ResultType = typeof(object); } return resolver; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MemberCollection.cs
- SelectionService.cs
- AppearanceEditorPart.cs
- NativeCompoundFileAPIs.cs
- Identity.cs
- DbProviderSpecificTypePropertyAttribute.cs
- TextTreePropertyUndoUnit.cs
- GridView.cs
- PageBuildProvider.cs
- NodeInfo.cs
- MultiSelector.cs
- Color.cs
- SecuritySessionServerSettings.cs
- EdmScalarPropertyAttribute.cs
- BrowserCapabilitiesCodeGenerator.cs
- TimeIntervalCollection.cs
- SqlTransaction.cs
- WebScriptEnablingElement.cs
- CacheSection.cs
- ErrorFormatterPage.cs
- ConvertEvent.cs
- WizardDesigner.cs
- RadialGradientBrush.cs
- NameSpaceEvent.cs
- SqlUtil.cs
- LocalValueEnumerator.cs
- TypeLibConverter.cs
- Decimal.cs
- XmlILStorageConverter.cs
- RemoteWebConfigurationHost.cs
- CheckBoxField.cs
- ToolStripRenderEventArgs.cs
- XamlReaderHelper.cs
- ContainerParaClient.cs
- HtmlShimManager.cs
- TabPage.cs
- Block.cs
- GridViewCellAutomationPeer.cs
- Base64Decoder.cs
- RootAction.cs
- Vector3DAnimation.cs
- Int32Storage.cs
- SiteIdentityPermission.cs
- RecognizerBase.cs
- _LocalDataStore.cs
- ErrorStyle.cs
- ClientSettingsStore.cs
- WebBrowserNavigatingEventHandler.cs
- PeerPresenceInfo.cs
- EventRecord.cs
- ViewgenGatekeeper.cs
- SmtpDigestAuthenticationModule.cs
- OleDbDataAdapter.cs
- MetadataHelper.cs
- DataBoundControlAdapter.cs
- FixedSOMPageElement.cs
- CatalogZone.cs
- ConfigPathUtility.cs
- SizeConverter.cs
- AttributeProviderAttribute.cs
- CodeTypeMemberCollection.cs
- PrefixQName.cs
- CommonXSendMessage.cs
- _SslState.cs
- Listen.cs
- ErrorStyle.cs
- PolicyImporterElementCollection.cs
- MediaPlayerState.cs
- CssClassPropertyAttribute.cs
- Animatable.cs
- DataGridParentRows.cs
- ExtensionWindowResizeGrip.cs
- EntityContainer.cs
- DateTimeStorage.cs
- GeneralTransform3DGroup.cs
- AttributeEmitter.cs
- MessageLogTraceRecord.cs
- Crc32.cs
- SystemIcmpV6Statistics.cs
- Comparer.cs
- StreamResourceInfo.cs
- WebPartConnection.cs
- Style.cs
- Random.cs
- PersonalizableAttribute.cs
- UndoManager.cs
- RenderingEventArgs.cs
- SmtpSection.cs
- PageContentAsyncResult.cs
- GenericIdentity.cs
- JsonXmlDataContract.cs
- NotifyCollectionChangedEventArgs.cs
- SoapExtensionTypeElementCollection.cs
- AuthenticationSection.cs
- SettingsPropertyWrongTypeException.cs
- HTMLTextWriter.cs
- SafeTimerHandle.cs
- SplineQuaternionKeyFrame.cs
- RepeaterItemCollection.cs
- TextWriterTraceListener.cs