Ответы пользователя по тегу C#
  • Ссылка на dll на сервере, возможно?

    Ты можешь сделать такой плагин, который будет с сервера динамически подгружать какой-то код.
    Это лишь усложнит жизнь лояльным пользователям, которые готовы платить за твой плагин.
    Пират или желающий скопировать твою логику точно также перехватит эту dll.
    А ещё это создаст потенциальную дыру, и сделает твой плагин не применимым для некоторых клиентов.

    Или ещё вариант - вынести всю логику на сервер и постоянно передавать данные между твоим плагином и сервером.
    Это спасёт от пиратства, но все равно не все клиенты будут готовы за такое платить

    Чаще всего, описанную тобой задачу решают при помощи обфускации


    Неужто нельзя просто так же считывать ее, только чтобы она лежала безопасно на сервере?

    А как ревит должен понять, как с твоего сервера данные получить?
    В мире существую сотни разных протоколов, которые позволяют получить файл с какого-то сервера, включая кастомные. Вот как ревит поймёт, как работать с твоим сервером? И как ты определишь, что это делает ревит, и делает он это от имени пользователя, который купил лицензию?
    И нет, не тупо считывает. Попробуй сам написать приложение, которое динамически будет подгружать dll-ки и выполнять код.


    Начал штудировать WCF, но чем глубже закапываюсь, не нахожу ответа, возможен ли обмен объектами, вместо типичных стрингов, интов и т.д Что-то там про сериализацию упоминают, но даже близко не уверен, что ревитовские объекты можно сериализовать, там объекты с сотнями свойств.
    Увидел, что есть что-то новое по сравнению с wcf - gRPC. По-моему, смысл тот же. Есть даже какие-то облака azure, но стоит ли в них разбираться, тоже непонятно.

    1. Тебе не обязательно целиком эти объекты передавать. Ты можешь переложить только нужные данные в свои объекты и их стерилизовать.
    2. Сериализация - это преобразование объектов в некий вид, который пригоден для передачи куда-то.
    3. Azure - это просто сервис, где ты можешь арендовать сервер, если упрощать.
    4. WCF устарел
    Ответ написан
    2 комментария
  • Какую версию C# использует Mono?

    mono (mcs) поддерживает C# 7
    Но если тебе нужен C#10, например, то ты вполне можешь собрать код при помощи .net6 с таргетом на netstandart2.1 и запускать потом на моно
    Ответ написан
    Комментировать
  • При переводе float в string, число получается с запятой, а не с точкой. Можно ли переводить float в string так, чтобы число было с точкой?

    Запятая пишется из-за того что у тебя русская культура.

    Ты можешь в ToString передать нужную культуру.
    Например:
    (42.5).ToString(System.Globalization.CultureInfo.InvariantCulture)



    При попытке вставить строку с типами float значении float из C#, выходит ошибка

    Делай параметризованные запросы, чтобы такого не было.
    Ответ написан
    Комментировать
  • Как настроить neovim?

    www.omnisharp.net/#integrations

    1. Install the OmniSharp-vim Vim/neovim plugin using your favourite method or plugin manager.
    2. Optionally install a linting plugin (ALE or Syntastic) and selector plugin (fzf.vim, CtrlP or unite.vim).
    3. Create some mappings, or install vim-sharpenup to get up and running quickly.
    4. Open a .cs file in vim. OmniSharp-vim will ask permission to install the server - answer ‘Y’, wait for it to do its thing, and you’re away!


    https://github.com/OmniSharp/Omnisharp-vim
    Ответ написан
  • Где хранится имя переменной?

    1. Переменных после компиляции нет - это просто значения на стеке, с которыми производятся какие-то операции (даже адресов на таком уровне абстракции нет)
    2. На счёт vtable не подскажу, но там вроде уже есть имена методов и указатели на реализацию.
    3. Переменная ссылочного типа (например string) - это ссылка на стеке, которая указывает на данные в куче.
    4. Имён локальных переменных даже в метаданных нет

    После компиляции в машинный код - процессор работает с последовательностями байтов, числами, указателями. Тоже никаких переменных нет

    Советую обратить внимание на сайт sharplab.io - там ты можешь увидеть, как выглядит твой код на разных этапах, начиная с парсинга в AST, заканчивая ассемблером
    Ответ написан
    Комментировать
  • Какой проект нужно создать для примера?

    В каком смысле "какой"?
    Любой, где нужно файлы загружать.

    Если практически - в любом чате/соцсети/комментариях можно прикрепить файл или картинку к сообщению - тут и пригодится загрузка файлов.

    Если из энтерпрайза - всякие формы для загрузки сканов документов работают через аналогичный код.

    Если абстрактный - делай файлообменник, где можно будет скачать загруженный файл по ссылке
    Ответ написан
  • Source code generator как получить объект Assembly?

    Внутри Source Generator ты не можешь обращаться к рефлексии, тк рефлексия работает с уже скомпилированным кодом.
    Так что анализ AST и семантической модели - это единственный выход.
    Ответ написан
  • Не работает код. Ошибки CS0161 и CS1513. Что делать?

    1. Что должна делать эта строчка?
    string[] arr = text.Split();

    2. Покажи, где начинается и заканчивается цикл
    Спойлер, если лень играть в угадайку

    public static string Reverse(string text) {
          string[] arr = text.Split();
          for(int i = 0; i != arr.Length; i++) {
              char[] array = arr[i].ToCharArray();
              Array.Reverse(array);
              arr[i] = new String(array);
          } // Забыл вот эту фигурную скобку
          string result = string.Join(" ", arr);
          return result;
      }

    Ответ написан
    5 комментариев
  • Какая команда отвечает за остановку кода?

    Просто добавь в свой метод это:
    if(transform.position.y > 2)
      return;
    Ответ написан
    Комментировать
  • Ревью кода. Консольное приложение для создания и прохождения викторин. C#?

    1. Не ясно зачем использовал старый .net framework
    2. Зачем у Score публичные геттеры-сеттеры, если по идее класс иммутабельный и у него даже конструктор с обязательными параметрами есть?
    3. Везде есть привязка к русскому языку, что не очень хорошо, но и не смертельно.
    4. Есть небольшая проблема с именованием методов, но не критично
    5. Стандартная бинарная сериализация - зло почти всегда.
    6. Пароли в открытом виде, и даже нет никакой абстракции над форматом хранения данных (если бы была абстракция, то уже не так критично было бы)
    7. Относительные пути (нашёл в Manager.cs). Сами по себе относительные пути - это не плохо, но тут аж в родительскую папку стучится.
    8. Не понятно, почему есть всего три захардкоженных вида викторин. Разницу между ними по коду я не увидел.
    9. Главное меню в процедурном стиле с совершенно неговорящими именами методов и константами - ну это совсем уже ни в какие ворота.
    10. Нравится, что сразу есть разделение на два bounded context - прохождение викторин и создание. В принципе не сложно будет зарефакторить.

    Дальше не буду проверять. Кажется, что автор просто не достаточно проработал предметную область и не проработал архитектуру приложения, на основе этого.

    Советую почитать книги:
    "Чистая архитектура" Роберта Мартина
    "Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем" Эрика Эванса

    Не обязательно прямо целиком книги - можно просто почитать статьи и посмотреть доклады про то как следует строить архитектуру приложений.
    Вкратце:
    1. Старайся не смешивать модель предметной области и детали реализации
    2. Если делаешь обогащённые модели (с методами, которые отражают суть предметной области), то используй их повсеместно.
    3. Если делаешь анемичные модели - делай их повсеместно. Не стоит в рамках одного контекста смешивать оба подхода
    4. Код в идеале должен выглядеть так, чтобы было сразу понятно, что происходит и почему. Также должно быть очевидно, где и что нужно искать.
    5. В идеальном мире, код должен быть такой, что если бы тебе дали задачу "перенести это всё в веб", тебе бы вообще не пришлось никак менять код ядра (в данном случае проект QuizModel), и при этом не пришлось бы дублировать код из QuizCreator и QuizApp
    Ответ написан
    1 комментарий
  • Как можно получить состояние кнопки мыши в консольном приложении?

    потому что мне нужно узнать это глобально, даже когда свернуто приложение

    Тогда нужно смотреть в сторону всяких глобальных хуков.

    Вот есть либа готовая: https://github.com/gmamaladze/globalmousekeyhook
    Ответ написан
    Комментировать
  • Как сделать так чтобы в Апдэйте условие выполнялось только раз?

    Ну например что-то типа:
    // флаг, который определяет, была ли проверка
    private bool _triggeredOnce = false;
    public void Update() {
      if(!_triggeredOnce) {
        _triggeredOnce = true;
        // Дальше всё то, что должно отрабатывать при первом вызове.
      }
    }
    Ответ написан
    5 комментариев
  • Try and Finally - Что вернет функция?

    Твой код не скомпилируется :)
    Нельзя в блок finally пихать return.
    https://docs.microsoft.com/en-us/dotnet/csharp/mis...

    А так вообще да - finally выполняется в любом случае, хоть выпало хоть не выпало исключение.
    Ответ написан
    2 комментария
  • Как найти нужную мне папку перебрав все файлы на компе на C#?

    Рекурсивно обходи файлы/папки через Directory или DirectoryInfo
    Ответ написан
    Комментировать
  • Что нужно описывать в классах?

    Не важно, где это реализовывать. Можно даже целый отдельный класс для описания процесса покупки сделать .
    Так что делай там, где лично для тебя логичнее и удобнее
    Ответ написан
    Комментировать
  • Как в с# использовать вложенные циклы в методах расширении LINQ?

    Вложенные from in - это SelectMany
    Но вообще то что у тебя - это явно Join
    Ответ написан
    Комментировать
  • Как выполнить псевдокод?

    Как этот псевдокод выполнить на c#.

    Ну тебе его нужно спарсить и выполнить :)
    Для парсинга, кроме названного ANTLR можно ещё использовать Irony или Yoakke
    Если есть идеи как можно перенести алгоритм из игры в код избегая псевдокод поделитесь.

    Использовать какой-нибудь реально существующий встраиваемый язык, типа lua
    Ответ написан
    Комментировать
  • Можно ли в Visual studio использовать не T-sql в базах данных?

    твоё приложение подключается к субд не через студию, а через так называемый драйвер.
    Разные субд используют разные драйвера.

    Драйвер поставляется как обычная .net библиотека, обычно через nuget.
    В случае с mssql - это Microsoft.Data.SqlClient
    В случае с mysql - это MySqlConnector
    Код у них похожий, но всё-таки разный

    Visual Studio в этом процессе никак не участвует.
    Ответ написан
    Комментировать
  • Определить IP в ASP Core MVC?

    На скрине ты смотришь LocalIpAddress. А что с Remote? И с какой машины запрос делаешь? Если ты с локалхоста на локалхост будешь делать запрос, то Remote Будет localhost :)
    Ответ написан