The easiest way to do this is to declare an interface, and have both types implement it:
public interface IMachine { … }
public class MachineLine : IMachine
{
public double X1;
public double Y1;
public double X2;
public double Y2;
public double Thickness;
}
public class MachineCircle : IMachine
{
public double CenterX;
public double CenterY;
public double Radius;
}
Then you can do this:
List<IMachine> m = new List<IMachine>();