GetOutputDataInfo currently checks that the seed type and the first argument type of the aggregator function must be the same.
Example code:
a.Aggregate (b, (c, d) => e)
In this sample, b and c must be of the same type, otherwise an exception is thrown. This type check should be relaxed: aggregation also works if the type of b is merely assignable to the type of c.