es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El nombre “PostDevice.Connect” no existe en el contexto actual.

Soy nuevo en c#, así que no entiendo bien por qué estoy obteniendo este error. Estoy utilizando la clase IngenicoPOS para crear una venta, pero quiero crear la acción de venta dentro de una clase de operación de punto de venta para separarla del resto. Sin embargo, cuando intento conectar el dispositivo POS, obtengo un error que dice que postDevice.Connect no existe en el contexto actual. Para la parte de la conexión, sigo su documento en este enlace. Ahora, creo que estoy haciendo algo mal al crear un nuevo dispositivo POS o porque estoy tratando de crear una conexión dentro de una clase.
El código completo:
“`
class PosOperations
{
public PosOperations(string operationType, string paymentType, int amountToPay)
{
this.OperationType = operationType;
this.PaymentType = paymentType;
this.AmountToPay = amountToPay;
}

public string OperationType { get; }
public int AmountToPay { get; }
public string PaymentType { get; }

private const string PORT = "COM9";  
private POS posDevice = new POS(PORT);

posDevice.Connect();  // Devolverá true si se realiza la conexión, de lo contrario, devolverá false

}

Puedes ayudarme? ¿Cómo puedo utilizar los métodos de otra clase dentro de otra clase? ¿Por qué no se encuentra esto en el contexto actual?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema ocurre porque posDevice.Connect() está fuera de cualquier método, lo cual no está permitido en C#. En este caso, puedes mover el código de conexión al constructor de la clase PosOperations de la siguiente manera:

    class PosOperations 
    {
        private const string PORT = "COM9";
        private POS posDevice;
    
        public PosOperations(string operationType, string paymentType, int amountToPay)
        {
            this.OperationType = operationType;
            this.PaymentType = paymentType;
            this.AmountToPay = amountToPay;
    
            this.posDevice = new POS(PORT);
            this.posDevice.Connect();
        }
    
        public string OperationType { get; }
        public int AmountToPay { get; }
        public string PaymentType { get; }
    }
    

    Esto asegurará que el dispositivo sea inicializado y conectado cada vez que se crea una nueva instancia de la clase PosOperations. Adicionalmente, ahora puedes utilizar posDevice dentro de cualquier método de la clase PosOperations.

Comments are closed.