Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Expressions / InvokeMethod.cs / 1305376 / InvokeMethod.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Expressions { using 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 { Collection parameters; 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 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); this.resultArgument = new RuntimeArgument("Result", typeof(TResult), ArgumentDirection.Out); metadata.Bind(this.Result, this.resultArgument); arguments.Add(this.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 TResult EndExecute(AsyncCodeActivityContext context, IAsyncResult result) { this.methodExecutor.EndExecuteMethod(context, result); return this.Result.Get(context); } MethodResolver CreateMethodResolver() { return new MethodResolver { MethodName = this.MethodName, RunAsynchronously = this.RunAsynchronously, TargetType = this.TargetType, TargetObject = this.TargetObject, GenericTypeArguments = this.GenericTypeArguments, Parameters = this.Parameters, Result = this.resultArgument, ResultType = typeof(TResult), Parent = this }; } } } // 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
- BinaryMethodMessage.cs
- DataReaderContainer.cs
- ObservableDictionary.cs
- PreservationFileWriter.cs
- CompiledAction.cs
- CrossSiteScriptingValidation.cs
- TimeStampChecker.cs
- NetworkStream.cs
- SyntaxCheck.cs
- RequestBringIntoViewEventArgs.cs
- TagMapCollection.cs
- UriParserTemplates.cs
- PreProcessor.cs
- _IPv4Address.cs
- ProviderConnectionPointCollection.cs
- WebPartTransformerAttribute.cs
- StrokeDescriptor.cs
- SqlFileStream.cs
- StringArrayConverter.cs
- FunctionUpdateCommand.cs
- GraphicsContext.cs
- SourceSwitch.cs
- IPEndPointCollection.cs
- ElementUtil.cs
- MimeTypeMapper.cs
- MaterializeFromAtom.cs
- ForwardPositionQuery.cs
- SaveFileDialog.cs
- GuidelineCollection.cs
- SessionEndingCancelEventArgs.cs
- ProxyElement.cs
- COM2PropertyDescriptor.cs
- IIS7WorkerRequest.cs
- UnaryQueryOperator.cs
- WebColorConverter.cs
- DetailsViewUpdatedEventArgs.cs
- BufferBuilder.cs
- WpfWebRequestHelper.cs
- TiffBitmapDecoder.cs
- BinaryUtilClasses.cs
- EmptyStringExpandableObjectConverter.cs
- StaticFileHandler.cs
- Rule.cs
- LowerCaseStringConverter.cs
- CharKeyFrameCollection.cs
- OdbcFactory.cs
- MenuCommandService.cs
- StreamingContext.cs
- SelectionRange.cs
- PropertyValueChangedEvent.cs
- SimpleHandlerFactory.cs
- DurableInstance.cs
- SqlMultiplexer.cs
- VerificationAttribute.cs
- TextTreeInsertUndoUnit.cs
- TableTextElementCollectionInternal.cs
- SqlDataSourceConfigureSortForm.cs
- StringInfo.cs
- COM2IDispatchConverter.cs
- XamlNamespaceHelper.cs
- InternalDuplexChannelFactory.cs
- BodyWriter.cs
- AttachedAnnotationChangedEventArgs.cs
- AudioBase.cs
- RbTree.cs
- ResponseStream.cs
- LinkLabel.cs
- AutoGeneratedFieldProperties.cs
- TemplateContent.cs
- RepeaterItemEventArgs.cs
- StylusOverProperty.cs
- WebPartPersonalization.cs
- Select.cs
- BitArray.cs
- CodeTypeMemberCollection.cs
- TextAutomationPeer.cs
- DragDrop.cs
- XmlAttributes.cs
- DiscreteKeyFrames.cs
- ConfigViewGenerator.cs
- TransactionalPackage.cs
- regiisutil.cs
- HwndTarget.cs
- BoundColumn.cs
- FormView.cs
- SqlInternalConnectionTds.cs
- PackagingUtilities.cs
- BulletedListEventArgs.cs
- Bitmap.cs
- HotSpotCollection.cs
- TextEditorCopyPaste.cs
- OracleParameterCollection.cs
- SafeNativeMethods.cs
- MetaTableHelper.cs
- RoleGroup.cs
- WMIInterop.cs
- CachedPathData.cs
- VisualBrush.cs
- BitmapFrame.cs
- ContentType.cs