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
- SmtpSection.cs
- Visual.cs
- FrameworkReadOnlyPropertyMetadata.cs
- TagPrefixCollection.cs
- RuleSettings.cs
- Literal.cs
- Vector3D.cs
- RectKeyFrameCollection.cs
- QueryOperationResponseOfT.cs
- Splitter.cs
- XmlExpressionDumper.cs
- VoiceSynthesis.cs
- columnmapkeybuilder.cs
- DbMetaDataCollectionNames.cs
- Positioning.cs
- DBSqlParserColumnCollection.cs
- FrameworkElement.cs
- XmlTypeAttribute.cs
- ColorConverter.cs
- DataGridViewCellCollection.cs
- StaticTextPointer.cs
- DrawTreeNodeEventArgs.cs
- AcceleratedTokenProviderState.cs
- SimpleBitVector32.cs
- HostingEnvironmentSection.cs
- MemberInfoSerializationHolder.cs
- TrackingMemoryStream.cs
- BitmapInitialize.cs
- ComponentEditorPage.cs
- Win32.cs
- JsonFormatGeneratorStatics.cs
- DoubleKeyFrameCollection.cs
- TablePattern.cs
- ServiceOperationParameter.cs
- ProcessInputEventArgs.cs
- PeerCollaboration.cs
- _ConnectStream.cs
- X509ChainPolicy.cs
- ValueTypeFixupInfo.cs
- EntityContainerAssociationSetEnd.cs
- SymbolUsageManager.cs
- basenumberconverter.cs
- BindingContext.cs
- ManipulationPivot.cs
- DataGridColumn.cs
- EncryptedKey.cs
- ChannelPoolSettings.cs
- WsrmFault.cs
- TablePattern.cs
- WindowInteropHelper.cs
- SqlCacheDependency.cs
- SynchronizedDispatch.cs
- TdsParserStaticMethods.cs
- ImpersonationContext.cs
- CatalogZoneDesigner.cs
- ConstructorNeedsTagAttribute.cs
- DetailsViewPageEventArgs.cs
- ArgumentFixer.cs
- ModelItemExtensions.cs
- DbExpressionBuilder.cs
- SkinIDTypeConverter.cs
- SchemaRegistration.cs
- RuleSet.cs
- LayoutEvent.cs
- MultipleViewPatternIdentifiers.cs
- DataGridCellAutomationPeer.cs
- _NativeSSPI.cs
- MembershipUser.cs
- SymbolTable.cs
- XmlBufferReader.cs
- MenuItemCollection.cs
- SqlTypesSchemaImporter.cs
- WebReferencesBuildProvider.cs
- BufferedGraphics.cs
- DescendantQuery.cs
- UnsafeNativeMethodsMilCoreApi.cs
- SqlUdtInfo.cs
- FixedTextPointer.cs
- AttributeConverter.cs
- ScrollBarAutomationPeer.cs
- Conditional.cs
- RoleManagerSection.cs
- PropertyInformationCollection.cs
- SrgsItemList.cs
- ErrorHandlingAcceptor.cs
- mediaeventshelper.cs
- FunctionParameter.cs
- CalendarTable.cs
- InitializerFacet.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- DecoderBestFitFallback.cs
- TextPointer.cs
- ReadOnlyHierarchicalDataSource.cs
- Label.cs
- Errors.cs
- RouteParser.cs
- XPathMessageFilter.cs
- ConfigurationLocationCollection.cs
- ImageListImage.cs
- SymbolMethod.cs