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
- SQLBytesStorage.cs
- TabItemWrapperAutomationPeer.cs
- ObjectHandle.cs
- TdsParserSessionPool.cs
- IndentTextWriter.cs
- AliasedSlot.cs
- SchemaImporter.cs
- HtmlInputHidden.cs
- RectKeyFrameCollection.cs
- ItemsChangedEventArgs.cs
- CallSiteOps.cs
- _SecureChannel.cs
- NotificationContext.cs
- VarInfo.cs
- EntityCodeGenerator.cs
- CodePageUtils.cs
- SubMenuStyle.cs
- XsltInput.cs
- PropertyRecord.cs
- ListBoxChrome.cs
- BoolExpression.cs
- NameValueConfigurationElement.cs
- XPathNodeIterator.cs
- TextTreePropertyUndoUnit.cs
- ModelTreeEnumerator.cs
- XmlSchemaSimpleContent.cs
- FactoryGenerator.cs
- DataGridRow.cs
- Unit.cs
- Accessors.cs
- Crc32.cs
- SerTrace.cs
- ContentElementAutomationPeer.cs
- SatelliteContractVersionAttribute.cs
- ListenerHandler.cs
- TextEditorLists.cs
- InvalidTimeZoneException.cs
- DataErrorValidationRule.cs
- WebPartTransformerCollection.cs
- OdbcCommand.cs
- DataGridViewColumnStateChangedEventArgs.cs
- WasEndpointConfigContainer.cs
- SQLByteStorage.cs
- BinaryParser.cs
- ClientProxyGenerator.cs
- MemberInfoSerializationHolder.cs
- DtdParser.cs
- FontStyles.cs
- FamilyMapCollection.cs
- RayMeshGeometry3DHitTestResult.cs
- httpserverutility.cs
- XmlSchemaType.cs
- StyleXamlParser.cs
- TextureBrush.cs
- XamlToRtfWriter.cs
- UriTemplateTrieNode.cs
- PiiTraceSource.cs
- AssertValidation.cs
- EdgeProfileValidation.cs
- TypeCollectionPropertyEditor.cs
- OdbcPermission.cs
- XmlSchemaInferenceException.cs
- BuildProviderAppliesToAttribute.cs
- ComPlusTypeLoader.cs
- BuildProviderCollection.cs
- NGCPageContentCollectionSerializerAsync.cs
- BinaryObjectInfo.cs
- DataContractAttribute.cs
- RuntimeConfigLKG.cs
- DocumentXmlWriter.cs
- EntityDataSourceConfigureObjectContextPanel.cs
- Stackframe.cs
- SHA1CryptoServiceProvider.cs
- Inflater.cs
- MultilineStringConverter.cs
- InternalControlCollection.cs
- WebPartMenuStyle.cs
- input.cs
- BmpBitmapDecoder.cs
- DataGridViewRowCancelEventArgs.cs
- WebFormsRootDesigner.cs
- KeySplineConverter.cs
- LinqDataSourceHelper.cs
- SqlGenericUtil.cs
- EntityException.cs
- input.cs
- ExistsInCollection.cs
- Main.cs
- ShapingWorkspace.cs
- MessageDescription.cs
- Simplifier.cs
- SendSecurityHeaderElementContainer.cs
- BoundConstants.cs
- BitmapPalettes.cs
- EnumBuilder.cs
- TitleStyle.cs
- CodeAttributeArgumentCollection.cs
- Lease.cs
- XmlIlVisitor.cs
- RedirectionProxy.cs