Piping the result of Activity to another activity as an input argument

Expression activities (that is, activities that return a value, inheriting from Activity<T>, CodeActivity<T>, NativeActivity<T>, or AsyncCodeActivity<T>) return a value, the type of which is specified in the generic parameter <T>.

To begin with, custom expression activities have a property called Result:

https://msdn.microsoft.com/en-us/library/dd987724.aspx

When your custom activity executes, it's this property that must be set in order to return a value.

Next, when the second (receiving) activity executes, use a variable to store the returned data between the execution of the activities:

Variable<string> v = new Variable<string>();

this.Implementation = () => new Sequence

{

    Variables = { v },

    Activities =

   {

        new Assign<string> { To = v, Value = /* some in-argument */ },

        new WriteLine { Text = v }

   }
};