Wątek przeniesiony 2018-12-07 02:25 z C# i .NET przez somekind. Powód: Wątek dotyczący podstaw

Błąd Member cannot be accessed with an instance reference przy kompilacji

Odpowiedz Nowy wątek
2018-12-06 13:41
0

Witam.
Mam mały problem z c#.
Potrzebuję dodać do aplikacji RabbitMQ.

Mam taki kod:

 
    Main app
 
    using RabbitMQ.Client;
    using System.Text;
    using System;
    using Main.Test;
 
    namespace TestService.ConsoleApp
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                // Test RabbitMQ
                var sender = new Rabbit();
            sender.Send("IDG", "Hello World!");
            sender.Receive("IDG");
            Console.ReadLine();
            }
        }
    }
 
    Rabbit.cs:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using RabbitMQ.Client;
 
    namespace Main.Test
    {
        public class Rabbit
        {
            public IConnection GetConnection(string hostName, string userName, string password)
            {
                ConnectionFactory connectionFactory = new ConnectionFactory();
                connectionFactory.HostName = "localhost";
                connectionFactory.UserName = "guest";
                connectionFactory.Password = "guest";
                connectionFactory.Port = 5672; // 5672 for regular connections, 5671 for connections that use TLS
                return connectionFactory.CreateConnection();
            }
 
            public static void Send(string queue, string data)
            {
                using (IConnection connection = new ConnectionFactory().CreateConnection())
                {
                    using (IModel channel = connection.CreateModel())
                    {
                        channel.QueueDeclare(queue, false, false, false, null);
                        channel.BasicPublish(string.Empty, queue, null, Encoding.UTF8.GetBytes(data));
                    }
                }
            }
 
            public static void Receive(string queue)
        {
            using (IConnection connection = new ConnectionFactory().CreateConnection())
            {
                using (IModel channelconsumer = connection.CreateModel())
                {
                    channelconsumer.QueueDeclare(queue, false, false, false, null);
                    //var consumer = new EventingBasicConsumer(channel);
                    BasicGetResult result = channelconsumer.BasicGet(queue, true);
                    if (result != null)
                    {
                        string data =
                        Encoding.UTF8.GetString(result.Body);
                        Console.WriteLine(data);
                    }
                }
            }
        }
    }
 

Kiedy uruchamiam kompilację otrzymuję taki błąd:

  1. sender.Send("IDG", "Hello World!"); and sender.Receive("IDG"); - CS0176 C# Member cannot be accessed with an instance reference; qualify it with a type name instead

Wie ktoś może w jaki sposób można to naprawić?

Pozostało 580 znaków

2018-12-06 13:48

Usuń słówka static przed metodami ;)
z

public static void Send(string queue, string data)

na

public  void Send(string queue, string data)

i analogicznie druga metoda

edytowany 1x, ostatnio: neves, 2018-12-06 13:49

Pozostało 580 znaków

2018-12-06 13:48
0

Receive() i Send() masz oznaczone jako statyczne. Nie możesz ich wywołać z instancji. Co zresztą dokładnie mówi Ci treść błędu.

Pozostało 580 znaków

2018-12-06 14:12
0

Działa. Dziękuje za pomoc :)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0