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
- Subtree.cs
- AddingNewEventArgs.cs
- DataGridViewAutoSizeModeEventArgs.cs
- TextAdaptor.cs
- TreeNodeSelectionProcessor.cs
- FileReservationCollection.cs
- FileLoadException.cs
- SpeechRecognitionEngine.cs
- ClientApiGenerator.cs
- EnumerableRowCollectionExtensions.cs
- EditingCommands.cs
- EventTrigger.cs
- GridPatternIdentifiers.cs
- EventProviderTraceListener.cs
- FlowLayoutSettings.cs
- MaskDescriptors.cs
- MimeTypePropertyAttribute.cs
- ObjectQuery.cs
- _HelperAsyncResults.cs
- PixelFormat.cs
- OleDragDropHandler.cs
- CacheEntry.cs
- BamlLocalizationDictionary.cs
- NamespaceEmitter.cs
- XmlDictionaryWriter.cs
- DataKeyArray.cs
- EventBindingService.cs
- EntitySetRetriever.cs
- Column.cs
- TcpChannelHelper.cs
- ActivityDesignerAccessibleObject.cs
- SqlTypeSystemProvider.cs
- Exceptions.cs
- xdrvalidator.cs
- ParentControlDesigner.cs
- DelimitedListTraceListener.cs
- Base64Encoder.cs
- LoginView.cs
- LocalFileSettingsProvider.cs
- DbModificationClause.cs
- ExpressionEvaluator.cs
- HiddenField.cs
- Trace.cs
- WebPartChrome.cs
- TreeViewHitTestInfo.cs
- CodeTypeReference.cs
- StructuredTypeInfo.cs
- PerformanceCountersElement.cs
- GridViewRowCollection.cs
- AttributeSetAction.cs
- EncryptionUtility.cs
- hwndwrapper.cs
- IteratorDescriptor.cs
- ProviderConnectionPoint.cs
- EntityDataSourceChangingEventArgs.cs
- WorkflowOwnerAsyncResult.cs
- SynchronizedDispatch.cs
- GroupStyle.cs
- Point4DValueSerializer.cs
- SessionStateItemCollection.cs
- ParallelQuery.cs
- MessageDecoder.cs
- TableLayoutRowStyleCollection.cs
- AncillaryOps.cs
- ConnectionManagementSection.cs
- Soap.cs
- WindowsListBox.cs
- TextTreeFixupNode.cs
- PhoneCall.cs
- LineProperties.cs
- HandlerBase.cs
- ClientFormsAuthenticationCredentials.cs
- Property.cs
- UInt32Converter.cs
- CSharpCodeProvider.cs
- _HeaderInfoTable.cs
- NullRuntimeConfig.cs
- WorkflowDesigner.cs
- MenuItemBinding.cs
- RealProxy.cs
- AuthenticationModulesSection.cs
- TextDpi.cs
- HitTestResult.cs
- TransportOutputChannel.cs
- NativeObjectSecurity.cs
- PeerName.cs
- RotateTransform.cs
- RandomNumberGenerator.cs
- CountdownEvent.cs
- DefaultTraceListener.cs
- HttpAsyncResult.cs
- COM2ColorConverter.cs
- ProfileService.cs
- InputScopeNameConverter.cs
- BrowserCapabilitiesFactoryBase.cs
- WindowsProgressbar.cs
- SHA512Managed.cs
- CodeLinePragma.cs
- HashCodeCombiner.cs
- StorageMappingItemLoader.cs