I have a method in which I send two arguments of the same type and I need to fold them. For example, if these are numbers, then return only the sum, and if the lines are the concatenation of these lines. How can I do it? And if I pass a type that cannot be folded, then I need to throw an exception.

```
public class Calcul<T>
{
    public static T Add(T c1, T c2)
    {
    }
}

```