• "Несогласованность по доступности" и "недоступен из-за его уровня защиты". Как исправить?

    @lil_Toady
    Подобное возникает когда область видимости типа аргумента ниже области видимости самого метода. Возможно класс ModelAnimalpark у вас помечен как internal, или никак не помечен (по дефолту internal), а класс AnimalEdit и его конструктор публичные.
    Ответ написан
    Комментировать
  • Как скачать изображение и не получить Bad Request: wrong URL host?

    @lil_Toady
    Может дело в том что 192.168.10.40 - это адрес внутри локальной сети, а не внешний. Поэтому вы на него можете зайти, а бот нет.
    Ответ написан
  • List c# нужно найти не одинаковые элементы, как это сделать?

    @lil_Toady
    Думаю подойдет Except:
    var diff = current.Except(expected);

    Это выдаст элементы из current, которых нет в expected.

    Можно так же и в обе стороны, чтобы получить элементы которые не пересекаются из обоих списоков:
    var diff = current.Except(expected).Union(expected.Except(current));


    Если для сравнения элементов нужна какая-то особая логика, то нужно будет так же внедрить IEqualityComparer и передавать аргументом в Except.
    Ответ написан
    1 комментарий
  • Как преобразовать (cast) void* в byte[][] в C++?

    @lil_Toady
    Простой ответ: Никак.

    void* - это совсем не то же самое что object в c# или java, это просто ссылка на какую-то область памяти, в данном случае на первый элемент массива. Какого размера объект по этой ссылке и что из себя представляет эта выделенная память нужно знать самому. Вы вполне можете сделать каст в массив int'ов или в одномерный массив, а не двухмерный - и это все будет валидным действием. Можете даже сказать что там объект какого-то класса или структуры. Это все лишь представление того как работать с указанной областью памяти.

    C++ слишком низкоуровневый для подобного :)
    Ответ написан
    Комментировать
  • Как распарсить строку к date в MySQL?

    @lil_Toady
    MySQL считывает вашу дату как %Y-%m-%d, поэтому и считает что год - 10, а дата - 20.

    Чтобы распарсить то что у вас есть в дату, вам нужен не DATE_FORMAT, а STR_TO_DATE:
    STR_TO_DATE('10.12.2010', '%d.%m.%Y')

    Ну и если вы хотите обратно в строку в нужном вам формате, то тогда уже DATE_FORMAT:
    DATE_FORMAT(STR_TO_DATE('10.12.2010', '%d.%m.%Y'), '%Y-%m-%d')
    Ответ написан
    Комментировать
  • Как внутри программы определить куда вывод идет в терминал или в файл?

    @lil_Toady
    Автор заметил что вывод разный, то что он сам направил вывод в файл он в курсе :)

    Узнать пишем ли мы в терминал можно так:
    isatty(fileno(stdout));

    istty находится в io.h, а fileno в stdio.h

    И ls, действительно смотрит если вывод в терминал - то в одну строку, иначе - в несколько:
    https://github.com/coreutils/coreutils/blob/master...
    Ответ написан
    Комментировать
  • Как запретить изменение значения непостоянной переменной?

    @lil_Toady
    Возможно вам подойдет какой-то singletonкласс в который будут загружены переменные из файла, а далее сделать геттеры у которых возвращаемое значение помечено как const, чтобы нельзя было из изменить. Да и сами методы тоже, чтобы обозначить что они не меняют состояние объекта.
    Ответ написан
    1 комментарий
  • Кто разъяснит строчку из C# кода?

    @lil_Toady
    Методу Enum.Parse нужно знать тип enum'а, чтобы понять список возможных значений. Для значений не входящих в перечисление будет выкинуто исключение ArgumentException.

    В перечисление DayOfWeek соответственно входят входят Sunday, Monday, Tuesday, Wednesday, Thursday, Friday и Saturday, если введенная вами строка в консоль не будет соответствовать одному из этих значений, то получите исключение.

    В последних версиях стандарта это же самое можно достичь более простым способом, передавая нужный тип как generic аргумент, и не приходится делать приведение типа:
    favDay = Enum.Parse<DayOfWeek>(Console.ReadLine());

    Думаю такая запись и проще для понимания при чтении кода :)
    Ответ написан
  • В чем смысл метода CreateScope, какие преимущества он дает?

    @lil_Toady
    Есть три типа срока жизни объектов в DI контейнере (по крайней мере от Microsoft, который тут рассматривается):
    - Singleton - Объект создается только один раз на срок жизни программы, соответственно все кто его запросил получат одну и ту же сущность;
    - Scoped - Объект создается только один раз в пределах скоупа, и эта сущность будет передаваться всем кто ее запрашивал в пределах этого скоупа , а после этого удаляется (и вызывается Dispose, если внедрен интерфейс IDisposable);
    - Transient - Объект создается по каждому запросу, то есть DI всегда будет подсовывать новую сущность;

    Это механизм изоляции и ограничения срока жизни объекта. Если рассматривать ASP.NET, то каждый запрос к серверу обрабатывается в своем скоупе.
    Ответ написан
    Комментировать
  • Тип данных аналогичный таблице в C#?

    @lil_Toady
    Все верно, вам подойдет struct или class, чтобы описать одну запись (строку), разница между ними будет что первое - value type, не может быть null. И далее любая коллекция, даже простой массив.

    Предположим что вы описали сущность так:
    class Item
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public DateTime Time { get; set; }
    }


    для простоты используем List - простейший динамический список, можно добавлять, удалять и т.п.:
    var timeTable = new List<Item>
    {
      new Item { Id = 1, Title = "Иван Сергеевич", Time = DateTime.Parse("20.05.2019 18:45") },
      new Item { Id = 2, Title = "Петр Николаевич", Time = DateTime.Parse("20.05.2019 16:45") },
    };


    И теперь через Linq (using System.Linq;) можно работать с этими данным, работает на любой коллекции или массиве, внедряющих интерфейс IEnumerable, и предоставляет различные методы типа Where, Min, Max, OrderBy и т.п.
    var ordered = timeTable.OrderBy(item => item.Time); // Получили IEnumerable<Item>  отсортированный по Time


    P.S. Такая запись, более похожая на SQL тоже возможна, но думаю подход с методами будет все же более удобным
    var ordered = from item in timeTable orderby item.Time ascending select item;
    Ответ написан
    2 комментария
  • Как DI резолвится в .ctor'е контроллера?

    @lil_Toady
    Не очень понятен вопрос.
    Если про то как DI понимает какую имплементацию использовать - все просто, вы сами ее и указываете для конкретного интерфейса.
    А если вам интересно как DI понимает что передать в конструктор: через рефлексию, в Type есть метод GetConstructors() - получить список ConstructorInfo, описывающих каждый из задекларированных конструкторов. Далее можно получить список параметров (ParameterInfo) через GetParameters() и найти тот, все типы параметров которого известны DI, инстанциировать их и затем уже инстациировать запрошеный класс, как например контроллер, используя, например, Activator.CreateInstance куда передается тип нужного нам класса и список аргументов.
    Ответ написан
    2 комментария
  • Как работает WinSock::accept?

    @lil_Toady
    Если кртако:
    TCP - сессионный протокол, а соответственно запросы на открытие подключения надо принять, что и делает accept. Логически, каждый подключенный клиент - это отдельный сокет, который через accept мы и получим.
    Ответ написан
    Комментировать
  • Как установить параметр VCInstallDir для VS 2010?

    @lil_Toady
    Наверное уже поздно, но вдруг кому понадобится:

    VCInstallDir, как и многие другие переменные среды для студии задаются и проверяются вызовом %vs dir%\Common7\Tools\vsvars32.bat,
    который в свою очередь вызывает VCVarsQueryRegistry.bat.

    Если глянуть последний батник, для VCInstallDir, ключ "10.0" ищется в следующих путях:
    - HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VC7
    - HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VC7
    - HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7
    - HKCU\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7
    Ответ написан
    Комментировать