Ответы пользователя по тегу .NET
  • Как отсортировать двухмерный массив по сумме элементов столбца?

    impwx
    @impwx
    Разработчик
    На помощь приходит LINQ:

    var random = new Random();
    
    // размеры массива, в качестве примера взяты константы
    var columns = 10;
    var rows = 5;
    
    // создаем данные
    var data = new int[rows][];
    for(var row = 0; row < rows; row++)
    {
        data[row] = new int[columns];
        for(var column = 0; column < columns; column++)
            data[row][column] = random.NextInt(-100, 100);   
    }
    
    // сортируем данные
    var sorted = data.OrderBy(x => x.Sum()).ToArray();
    Ответ написан
    Комментировать
  • Как нынче тестят Console?

    impwx
    @impwx
    Разработчик
    Это как раз та проблема, ради решения которой придумали Dependency Injection. Если вы жестко завязываетесь на статический класс Console, приходится мириться с его ограничениями, в частности - однопоточностью.

    Самое грамотное решение, за которое будет не стыдно - действительно, использовать DI и интерфейс. Придется реализовать два класса на его основе - "боевой" ConsoleWrapper и тестовый ConsoleWrapperMock.

    В качестве быстрого и грязного решения - если программа несложная и вы можете протестировать всё через входные параметры, можно в тесте запускать ее как внешний процесс (вызывать exe-шник) - тогда процессы будут независимы друг от друга и тесты можно будет гонять параллельно.
    Ответ написан
    2 комментария
  • Можно ли выполнять lock на list?

    impwx
    @impwx
    Разработчик
    Допустим, _inner используется у вас во многих местах, и есть некий публичный метод, который его возвращает. Тогда внешний код сможет вызвать этот метод, получить тот же экземпляр объекта _inner и поставить на него свой lock. Так можно случайно словить взаимоблокировку и повесить приложение.

    Подобные моменты бывает очень сложно отследить, потому объект может быть возвращен косвенно, по интерфейсу, или как-либо еще. Отдельное поле _lock - это просто правило хорошего тона, его создают для безопасности: очень маловероятно, что кому-то придет в голову использовать его за пределами инструкции lock и тем более вернуть из метода.

    Если у вас небольшой код и вы уверены, что знаете, что делаете - разницы нет.
    Ответ написан
    Комментировать
  • Почему EF не заполняет значение?

    impwx
    @impwx
    Разработчик
    В третьем примере вместо new Guid() используйте Guid.NewGuid() - конструктор по умолчанию всегда возвращает нулевой GUID.
    Ответ написан
  • Порядок действий при переносе БД MS SQL при работе с Entity Framework?

    impwx
    @impwx
    Разработчик
    В EF существует встроенный механизм миграций. Судя по вашему описанию, он полностью подходит - в коде миграции можно описать любую трансформацию данных или схемы, которая осуществима средствами SQL.

    Но зачем каждый раз очищать все таблицы?
    Ответ написан
    Комментировать
  • Допустимо ли возвращать порядковый номер объекта в GetHashCode()?

    impwx
    @impwx
    Разработчик
    Методы GetHashCode и Equals нужно переопределять, если вы хотите, чтобы два различных экземпляра одного класса могли считаться одинаковыми. В вашем же случае экземпляр будет равен только самому себе, потому что Id всегда будут уникальными. Получается, вы переизобрели семантику сравнения по ссылке, которая и так работает по умолчанию, если не переопределять GetHashCode и Equals вообще.

    Еще одна проблема возникнет, если вы будете использовать этот код в многопоточном окружении - без синхронизации доступа к LastLeasedID рано или поздно получите дубликаты.
    Ответ написан
  • React.js + WebApi.NET. Подскажи как сделать авторизацию?

    impwx
    @impwx
    Разработчик
    WebAPI обычно авторизуется через Bearer Token. У вас должен быть публичный контроллер, который в обмен на правильную пару логин-пароль выдает эти токены. Другие контроллеры следует пометить атрибутом [Authorize] и при каждом обращении к ним передавать в заголовках запроса этот токен:

    Authorization: Bearer <значение токена>

    Где хранить токен на клиенте - решайте сами. Это может быть localStorage, куки, или просто локальная переменная.
    Ответ написан
    3 комментария