Задать вопрос
  • Как исправить ошибки SqliteException: SQLite Error 19: 'UNIQUE constraint failed: AspNetUsers.NormalizedUserName' и DbUpdateException?

    yarosroman
    @yarosroman
    C# the best
    не пишите User = owner, это навигационное свойство, оно не хранится в базе, для связи достаточно UserId выставить. В вашем случае EF добавляет еще и юзера, а так ка он уже есть, отсюда и ошибка.

    https://learn.microsoft.com/en-us/ef/core/saving/r...
    Ответ написан
    Комментировать
  • В чем причина исключение FormatException?

    PasswordHash = UserDto.Password
    Ты почему-то пароль пытаешься запихнуть туда, где ожидается хэш пароля.
    Тебе нужно:
    1. Захэшировать пароль
    2. Хэш закодировать в base64
    и его уже передать в _signInManager
    Ответ написан
    Комментировать
  • Зачем нужен Service Locator?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Не легче ли внедрение делать через конструкторы?

    А вы не задумывались над тем, кто и как будет разрешать зависимости для конструкторов?
    В нынешнем ASP.NET Core этим занимются каркасы приложений ("фрейворки", от английского framework). И делают они это как раз через контейнер сервисов (либо напрямую через GetService, либо через ActvatorUtilities).
    Но есть области в ASP.NET Core , которые фремворками не закрываются - наример, в конвейере обработчиков запроса (middleware), там где требуется делегат типа RequestDelegate. И там без прямого обращения к контейнеру сервисов не обойтись.
    Ответ написан
    Комментировать
  • Зачем нужен Service Locator?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Случаев использования много. В некоторых без него не обойтись.
    Например:
    - Зависимость необязательна
    - Есть множество реализаций, а не 1
    - Отложенное создание

    Если не хочешь использовать - не используй
    Ответ написан
    1 комментарий
  • Что такое контекст в Entity framework?

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

    Вот ты сам на всё и ответил.
    Добавлю только, что DbContext также содержит в себе change tracker и кэш, которые также можно немного настроить в DbContextOptions.
    Ответ написан
    Комментировать
  • Как написать на ассемблере программу без ос?

    Писать программы, которые не зависят от ОС или писать без ОС?
    Если первое, то можно (ОС и EFI же как-то пишутся и работают)
    Если второе, то сейчас не получится. Раньше код писали на перфокартах, которые сразу же были и носителем данных. Сегодня носителями данных являются hdd и ssd, на которые ты сам данные записать никак не сможешь.
    Ответ написан
    Комментировать
  • Есть ли смысл завершать задачи генерируя ошибку(token.ThrowIfCancellationRequested()) если есть спобос получше?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Зачем завершать процесс генерируя ошибку(token.ThrowIfCancellationRequested())?

    1. Чтобы не плодить постоянно Result классы с шаблонными Cancelled.
    2. Как иначе определить успешно завершилась задача или токен был отменен?

    Вот есть способ завершать задачу return-ном в методе задачи.

    У тебя void, а если должен вернуть что-то? См. п. 2

    try-catch ресурса затратная конструкция

    Если это код который запускается 10000000... раз в мс, то да - затратная. А если это бизнес-логика, которая часто меняется, то нет - так быстрее вносить изменения - просто добавь еще один обработчик (не надо вносить кучу флагов)
    Ответ написан
    Комментировать
  • Как сделать так, чтобы raycast не цеплял объекты, находящиеся под UI?

    @fghttht Автор вопроса
    Проблему решил исключив слой, на котором располагались регионы в компоненте Graphic Raycaster, в параметре blocking mask. EventSystem.current.IsPointerOverGameObject() заработал как надо
    Ответ написан
    Комментировать
  • От чего появляеться исключение System.IO.IOException: "The process cannot access the file '37.txt' because it is being used by another process."?

    Adler_lug
    @Adler_lug
    File.Create возвращает FileStream, т.е. он и держит файл открытым
    Ответ написан
    Комментировать
  • Зачем нужен оператор fixed в c#?

    fixed запрещает перемещать объект в памяти.
    Сборщик мусора может и не соберёт объект, но без fixed он может его переместить и тогда указатель станет невалидным.

    stackalloc выделяет данные на стеке, а по тому с ним такой проблемы нет, ну и да - он не нагружает gc, хоть и обладает кое-какими другими потенциальными проблемами.
    Ответ написан
    3 комментария
  • Почему может не срабатывать финализатор при вызове GC.Collect?

    1. Финализация вполне может быть отложена по усмотрению сборщика мусора
    2. JIT вполне может так скомпилировать твой код, что вот этот = null будет опущен => при поиске ссылок, ссылка всё ещё будет на стеке.
    Попробуй вынести в новый метод и посмотреть там.

    Ну и такой код как у тебя в реальном мире лучше не использовать (это я про принудительный вызов гц, логи в финализаторе, и финализатор который не чистит неуправляемые ресурсы)

    PS: читаем внимательно документацию и особенно слова "не гарантирует"

    Используйте параметр , mode чтобы указать, должна ли сборка мусора происходить немедленно или только при оптимальном времени для освобождения объектов. Использование этого метода не гарантирует, что вся недоступная память в указанном поколении будет освобождена.

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

    Сборщик мусора не собирает объекты с номером поколения, превышающим указанное параметром generation . Используйте свойство , MaxGeneration чтобы определить максимально допустимое generationзначение .

    Чтобы сборщик мусора учитывал все объекты независимо от их создания, используйте версию этого метода, которая не принимает параметров.

    Чтобы сборщик мусора отнимает объекты до указанного поколения объектов, используйте перегрузку GC.Collect(Int32) метода . При указании максимального поколения собираются все объекты.
    Ответ написан
    5 комментариев
  • Откуда у делегатов метод Invoke?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Во время компиляции создается класс, наследующийся от MulticastDelegate. Там и определяются.

    StackOverflow

    Делегат:
    namespace ConsoleApp;
    
    public delegate int Factory();


    IL код
    // Type: ConsoleApp.Factory 
    // Assembly: ConsoleApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
    // MVID: 158825C2-2E1C-449E-A72A-66768D48C2ED
    // Location: /home/user/RiderProjects/ConsoleApp/ConsoleApp/bin/Debug/net6.0/ConsoleApp.dll
    // Sequence point data and variable names from /home/user/RiderProjects/ConsoleApp/ConsoleApp/bin/Debug/net6.0/ConsoleApp.pdb
    
    .class public sealed auto ansi
      ConsoleApp.Factory
        extends [System.Runtime]System.MulticastDelegate
    {
    
      .method public hidebysig specialname rtspecialname instance void
        .ctor(
          object 'object',
          native int 'method'
        ) runtime managed
      {
        // Can't find a body
      } // end of method Factory::.ctor
    
      .method public hidebysig virtual newslot instance int32
        Invoke() runtime managed
      {
        // Can't find a body
      } // end of method Factory::Invoke
    
      .method public hidebysig virtual newslot instance class [System.Runtime]System.IAsyncResult
        BeginInvoke(
          class [System.Runtime]System.AsyncCallback callback,
          object 'object'
        ) runtime managed
      {
        // Can't find a body
      } // end of method Factory::BeginInvoke
    
      .method public hidebysig virtual newslot instance int32
        EndInvoke(
          class [System.Runtime]System.IAsyncResult result
        ) runtime managed
      {
        // Can't find a body
      } // end of method Factory::EndInvoke
    } // end of class ConsoleApp.Factory
    Ответ написан
    Комментировать
  • Как называются и зачем нужны такие штуки [field:]?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Это цели атрибутов - то для чего атрибут предназначается.
    RTFM
    Ответ написан
    Комментировать
  • Как завершить работу метода из другого метода?

    Viji
    @Viji
    DevOps Engineer
    Копай в сторону CancellationTokens и пожалуйста проверяй орфографию русского языка перед тем, как здесь писать - Амир бей )

    https://hackernoon.com/why-do-you-need-a-cancellat...
    Ответ написан
    Комментировать
  • Какие есть виды полиформизма?

    ad-hoc - это как раз перегрузка методов.
    Методы расширения - это вообще не полиморфизм.
    Полиморфизм подтипов - это обычный полиморфизм с наследованием и реализацией интерфейсов.
    Есть ещё параметрический полиморфизм - это когда у тебя женерики используются.
    Ответ написан
    2 комментария
  • Как работает Object?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    По поводу была строка и нет.
    str в первую очередь переменная, а с точки зрения языка, это ссылка на место в памяти. Присвоив другое значение, соответственно меняется указателем. Грубо, показал пальцем на диван, а потом на стол.
    Ответ написан
    Комментировать
  • В чем различие между делегатоми и событиями?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Событие (event) - это синтаксический сахар, которым посыпан механизм вызова одного или несколких методов на основе базового для всех делегатов встроенного типа Delegate (вызов нескольких методов реализует класс MulticastDelegate, унаследованный от Delegate) Компилятор же, встретив ключевое слово event, создает переменную-делегат указанного типа с тем же именем (далее ИмяСобытия), доступную только внутри класса (т.е. private) и два метода: add_ИмяСобытия и remove_ИмяСобытия. А встретив операторы += и -= для подписки/отписки вызывает соответсвующий метод. Подробнее можно посмотреть в главе 11 книги Джеффри Рихтера "CLR via C#. Программирование на платформе Microsoft .NET Framework 4.5 на языке C#".
    Вызывать несколько методов можно и через один делегат - см. пример в справке для класса MulticastDelegate.
    Ответ написан
    Комментировать
  • Почему Юнити перестает работать?

    WNeZRoS
    @WNeZRoS
    Возможно вечный цикл из-за того что if (oldCount != count) никогда не заходит внутрь т.к. этот код блокирует обработку кадров. Чтобы кадры продолжили обрабатываться надо в цикле использовать yield. Заодно можно заменить это ожидание циклом на корутину от юнити: yield return new WaitForSeconds(5);

    https://docs.unity3d.com/ScriptReference/WaitForSe...
    Ответ написан
    4 комментария
  • Что нужно знать Unity development и какие должны быть знания c#?

    @GLeBaTi
    C# - достаточно только базы
    Git - можно без него, но делать бэкапы муторно. Если в команде несколько человек, то обязательно. Советую GitExtensions в паре с Github.
    Математика - школьный курс, векторы. (если не делаете что-то специфическое)
    Алгоритмы - всё что нужно, уже есть в стандартной библиотеке .net. Если нет, то гугл поможет.
    Шейдеры - если нужны нестандартные эффекты. Либо готовые из assetstore.
    Базы данных + сетевое взаимодействие - если делаете мультиплеер.

    "Изучаем C# через разработку игр на Unity. 5-е издание | Ферроне Харрисон" - можно параллельно с metanit-ом изучать.
    Ответ написан
    Комментировать
  • Как вызываються приватные методы в c#?

    Рантайм заранее знает адреса для их вызова.
    Технически вызов приватного и публичного метода никак не различается.

    Если ты сам хочешь попробовать сделать что-то похожее, то тебе нужно смотреть в сторону рефлексии.
    Ответ написан
    Комментировать