c # – Should I use the factory template when instantiating objects with very different builders?

Let's say (as an example) that I have three classes that implement IShape. We are a square with a square constructor (int length). The second is a triangle with a triangle constructor (int base, int height). Third is a circle with a circle builder (double radius).

Since all classes share the same interface, I am thinking of the factory template to use as the authoring template. However, the factory method would be tricky because it must provide parameters for these different constructors – for example:

IShape CreateShape (int length, int base, height int, double radius)
{
...
return the new circle (radius);

...
return a new sort (base, height);

...
returns a new square (long int);
}

This factory method seems pretty clumsy. Is it there that an abstract plant or other design pattern comes into play as a superior approach?