/// <summary>
        /// Run the ObjectInfo mapbasic command in Mapinfo, and returns a string containing the result.
        /// </summary>
        /// <param name="variable">The variable used by the ObjectInfo call.</param>
        /// <param name="attribute">The attribute specifying which information to return.</param>
        /// <returns>A string containing the retured result from calling the ObjectInfo command in Mapinfo.</returns>
        public static string ObjectInfo(IVariable variable, ObjectInfoEnum attribute)
        {
            IMapinfoWrapper wrapper        = ServiceLocator.GetInstance <IMapinfoWrapper>();
            string          expression     = variable.GetExpression();
            string          returnedstring = wrapper.Evaluate("ObjectInfo({0},{1})".FormatWith(expression, (int)attribute));

            return(returnedstring);
        }
        /// <summary>
        /// Creates a new point object in Mapinfo.
        /// Returns a <see cref="T:MapinfoWrapper.Geometries.Points.Point"/> which can be inserted into a
        /// <see cref="T:MapinfoWrapper.DataAccess.Table"/>
        /// <para>This function will create a new object variable in Mapinfo with a modified GUID as its name.</para>
        /// </summary>
        /// <param name="location">A <see cref="T:MapinfoWrapper.Geometries.Coordinate"/> that contains coordinates at
        /// which to create the point.</param>
        /// <returns>A new point object.</returns>
        public Point CreatePoint(Coordinate location)
        {
            IVariable variable = variablefactory.CreateNewWithGUID(Variable.VariableType.Object);

            this.wrapper.RunCommand("Create Point Into Variable {0} ({1},{2}) ".FormatWith(variable.GetExpression(), location.X, location.Y));
            return(new Point(variable));
        }
        /// <summary>
        /// Creates a new line object in Mapinfo.
        /// Returns a <see cref="T:MapinfoWrapper.Geometries.Lines.Line"/> which can be inserted into a
        /// <see cref="T:MapinfoWrapper.DataAccess.Table"/>
        /// <para>This function will create a new object variable in Mapinfo with a modified GUID as its name.</para>
        /// </summary>
        /// <param name="start">The <see cref="T:MapinfoWrapper.Geometries.Coordinate"/> for the start of the line.</param>
        /// <param name="end">The <see cref="T:MapinfoWrapper.Geometries.Coordinate"/> for the end of the line.</param></param>
        /// <returns>A new <see cref="T:MapinfoWrapper.Geometries.Lines.ILine"/>.</returns>
        public ILine CreateLine(Coordinate start, Coordinate end)
        {
            IVariable variable = variablefactory.CreateNewWithGUID(Variable.VariableType.Object);

            this.wrapper.RunCommand("Create Line Into Variable {0} ({1},{2})({3},{4})".FormatWith(variable.GetExpression(), start.X, start.Y, end.X, end.Y));
            return(new Line(variable));
        }