Включите dll в качестве ссылки и вызовите объекты вашего класса

Я хочу вызвать основную функцию следующего класса:

class Program
{
    static Pool _pool = null;
    static Work _work = null;
    static uint _nonce = 0;
    static long _maxAgeTicks = 20000 * TimeSpan.TicksPerMillisecond;
    static uint _batchSize = 100000;

    static void Main(string[] args)
    {
        while (true)
        {
            try
            {
                _pool = SelectPool();
                _work = GetWork();
                while (true)
                {
                    if (_work == null || _work.Age > _maxAgeTicks)
                        _work = GetWork();

                    if (_work.FindShare(ref _nonce, _batchSize))
                    {
                        SendShare(_work.Current);
                        _work = null;
                    }
                    else
                        PrintCurrentState();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine();
                Console.Write("ERROR: ");
                Console.WriteLine(e.Message);
            }
            Console.WriteLine();
            Console.Write("Hit 'Enter' to try again...");
            Console.ReadLine();
        }
    }


    private static void ClearConsole()
    {
        Console.Clear();
        Console.WriteLine("*****************************");
        Console.WriteLine("*** Minimal Bitcoin Miner ***");
        Console.WriteLine("*****************************");
        Console.WriteLine();
    }

    private static Pool SelectPool()
    {
        ClearConsole();
        Print("Chose a Mining Pool 'user:password@url:port' or leave empty to skip.");
        Console.Write("Select Pool: ");
        string login = ReadLineDefault("lithander_2:foo@btcguild.com:8332");
        return new Pool(login);
    }

    private static Work GetWork()
    {
        ClearConsole();
        Print("Requesting Work from Pool...");
        Print("Server URL: " + _pool.Url.ToString());
        Print("User: " + _pool.User);
        Print("Password: " + _pool.Password);
        return _pool.GetWork();
    }

    private static void SendShare(byte[] share)
    {
        ClearConsole();
        Print("*** Found Valid Share ***");
        Print("Share: " + Utils.ToString(_work.Current));
        Print("Nonce: " + Utils.ToString(_nonce));
        Print("Hash: " + Utils.ToString(_work.Hash));
        Print("Sending Share to Pool...");
        if (_pool.SendShare(share))
            Print("Server accepted the Share!");
        else
            Print("Server declined the Share!");

        Console.Write("Hit 'Enter' to continue...");
        Console.ReadLine();
    }

    private static DateTime _lastPrint = DateTime.Now;
    private static void PrintCurrentState()
    {
        ClearConsole();
        Print("Data: " + Utils.ToString(_work.Data));
        string current = Utils.ToString(_nonce);
        string max = Utils.ToString(uint.MaxValue);
        double progress = ((double)_nonce / uint.MaxValue) * 100;
        Print("Nonce: " + current + "/" + max + " " + progress.ToString("F2") + "%");
        Print("Hash: " + Utils.ToString(_work.Hash));
        TimeSpan span = DateTime.Now - _lastPrint;
        Print("Speed: " + (int)(((_batchSize) / 1000) / span.TotalSeconds) + "Kh/s"); 
        _lastPrint = DateTime.Now;
    }

    private static void Print(string msg)
    {
        Console.WriteLine(msg);
        Console.WriteLine();
    }

    private static string ReadLineDefault(string defaultValue)
    {
        //Allow Console.ReadLine with a default value
        string userInput = Console.ReadLine();
        Console.WriteLine();
        if (userInput == "")
            return defaultValue;
        else
            return userInput;
    }
}

Я создаю новое консольное приложение, добавляю dll, помещаю класс и вызываю метод класса:

using Example;

namespace ConsoleApplication1
{
    class Prueba
    {
        static void Main(string[] args)
        {
            metodo();
        }

        private static void metodo()
        {
            Program.Main(); // aqui no puedo llamarlo
        }


    }
}

Когда я вызываю main, мне выдаются следующие ошибки:

Код серьезности Описание Ошибка состояния подавления строки файла проекта CS0122 «Программа» недоступна из-за своего уровня защиты Консольное приложение1 c: \ users \ moh \ документы \ visual studio 2015 \ Projects \ ConsoleApplication1 \ ConsoleApplication1 \ Test.cs 18 Active

Код серьезности Описание Ошибка состояния подавления строки файла проекта CS0103 Имя 'args' не существует в текущем контексте ConsoleApplication1 c: \ users \ moh \ documents \ visual studio 2015 \ Projects \ ConsoleApplication1 \ ConsoleApplication1 \ Test.cs 18 Active

Какой будет правильный метод вызова моей основной функции моей .dll, который я добавил в качестве ссылки и использовать другое имя пробела?

Исправлено: приватная статическая строка [] args;

Если массив не определен как q нет. Я опоздал из-за этого.

0
задан 10.11.2016, 01:15
2 ответа

Без того, чтобы анализировать код много, он не Prueba.Main(); он Program.Main();, и ты был бы должен перемещать его какой-то array string как параметр (хотя это будет один тип пустоты), так как этот обязательный в Main.

2
ответ дан 24.11.2019, 12:41
  • 1
    пример как перемещать его какой-то array string как параметра? –  Perl 09.11.2016, 16:51
  • 2
    string [] arr = new string [] {}; –  Matias Sala 09.11.2016, 20:58
  • 3
    если задержано это, он это подтверждает, что даже визуальный studio решает это тебе только –  Perl 10.11.2016, 01:15
  • 4
    он проголосовал бы за меня в мой собственный негатив, но я не могу –  Perl 10.11.2016, 01:17
  • 5
    Нет проблемы, все были начинающими когда-нибудь;-). –  Matias Sala 10.11.2016, 04:18

Сначала, я думаю, что ты задал другой вопрос об этой теме, и тебе сказали, что, чтобы производить dll, ты должен создавать проект типа "Библиотеку классов". Я предполагаю, что ты это не сделал, так как у библиотеки классов нет метода "main"

С другой стороны, класс, к которому ты хочешь призвать дебет, быть определенной как public.

1
ответ дан 24.11.2019, 12:41