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
- ForceCopyBuildProvider.cs
- UIElementParagraph.cs
- TrackingValidationObjectDictionary.cs
- Source.cs
- SerializerDescriptor.cs
- EastAsianLunisolarCalendar.cs
- ThumbAutomationPeer.cs
- HttpModule.cs
- ProtocolElement.cs
- BasePropertyDescriptor.cs
- FrameworkTextComposition.cs
- EventManager.cs
- EventBindingService.cs
- MenuDesigner.cs
- ThicknessConverter.cs
- ILGen.cs
- SqlDataSource.cs
- ApplicationTrust.cs
- XmlSchemaImport.cs
- Regex.cs
- DrawingBrush.cs
- SharedStream.cs
- WebPartConnectionCollection.cs
- DataViewManagerListItemTypeDescriptor.cs
- TypeConverterHelper.cs
- PagesChangedEventArgs.cs
- HttpServerUtilityBase.cs
- DesignerForm.cs
- StylusPointPropertyUnit.cs
- BaseConfigurationRecord.cs
- MatchNoneMessageFilter.cs
- CustomSignedXml.cs
- RepeatButton.cs
- AuthenticationModuleElement.cs
- StatusBarItemAutomationPeer.cs
- PreProcessInputEventArgs.cs
- LinqDataSourceStatusEventArgs.cs
- BeginSelectCardRequest.cs
- PolicyLevel.cs
- MetadataPropertyvalue.cs
- TypeUtil.cs
- DocumentGrid.cs
- DataControlCommands.cs
- RoleService.cs
- DrawingBrush.cs
- UserValidatedEventArgs.cs
- SectionXmlInfo.cs
- WindowsFormsSynchronizationContext.cs
- UInt64.cs
- DataSvcMapFileSerializer.cs
- controlskin.cs
- AutoGeneratedField.cs
- RelationshipManager.cs
- MultiBinding.cs
- AliasGenerator.cs
- SearchForVirtualItemEventArgs.cs
- MembershipPasswordException.cs
- DbConnectionPool.cs
- SBCSCodePageEncoding.cs
- DbCommandTree.cs
- DataPagerFieldItem.cs
- Identifier.cs
- LinqToSqlWrapper.cs
- DataReaderContainer.cs
- WorkflowOperationInvoker.cs
- File.cs
- PageCodeDomTreeGenerator.cs
- HandleTable.cs
- PropertyToken.cs
- ResourceDisplayNameAttribute.cs
- PageSetupDialog.cs
- HtmlInputRadioButton.cs
- Triangle.cs
- ComponentRenameEvent.cs
- SqlComparer.cs
- StorageAssociationSetMapping.cs
- MetadataPropertyAttribute.cs
- COM2ExtendedUITypeEditor.cs
- DynamicResourceExtension.cs
- LocalizationCodeDomSerializer.cs
- CodeArrayIndexerExpression.cs
- DurationConverter.cs
- CryptoApi.cs
- SectionInformation.cs
- RuntimeConfigurationRecord.cs
- WhereaboutsReader.cs
- ManagementExtension.cs
- CodeAccessPermission.cs
- PropertyCondition.cs
- HttpVersion.cs
- SeekStoryboard.cs
- CultureInfo.cs
- PersistenceTypeAttribute.cs
- StyleModeStack.cs
- ThaiBuddhistCalendar.cs
- UserPreferenceChangedEventArgs.cs
- SafeRightsManagementSessionHandle.cs
- GeneralTransform3D.cs
- MimeXmlReflector.cs
- SerTrace.cs