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 }
}
};