Ответы пользователя по тегу C#
  • StreamReader, как изменить позицию?

    @cicatrix
    было бы большой ошибкой думать
    Сетевые потоки операцию SEEK не поддерживают. Читай всё подряд в массив, а уже там выбирай нужное.
    Такое может прокатить только с File/MemoryStream

    Прежде чем устанавливать позицию, проверяй свойство Stream.CanSeek
    Ответ написан
    Комментировать
  • Как прикрукрить Identity к существующему проекту на asp.net core 2.0?

    @cicatrix
    было бы большой ошибкой думать
    Я свой RoleProvider делал, в принципе то же самое:
    Начинай отсюда: https://docs.microsoft.com/ru-Ru/aspnet/identity/o...

    Найди нужный интерфейс (какой-нибудь IdentityProvider), напиши класс, который его реализует, пропиши в Web.Config
    Ответ написан
  • Как убрать элемент из списка полученный GetEnumSelectList?

    @cicatrix
    было бы большой ошибкой думать
    Яваскриптом после загрузки.
    Либо сделать 2 enum.
    Либо получать список значений и формировать select самому.
    Ответ написан
    Комментировать
  • Можно ли использовать несколько моделей на одной cshml странице?

    @cicatrix
    было бы большой ошибкой думать
    Вообще нет, но если очень хочется, можно, если использовать partial view.
    Каждый partial view может использовать свою модель.
    В коде основного View делаешь Html.RenderPartial.

    Строго говоря, это, конечно разные cshtml, но практически результат тот же, что и для одной.
    Ответ написан
    Комментировать
  • C#. Каким компонентом лучше взаимодействовать с API?

    @cicatrix
    было бы большой ошибкой думать
    Каким API? Их мильён.
    Если вас интересует, как сделать веб запрос, то:
    // using System.IO
    // using System.Net
    ...
                WebRequest wrq = WebRequest.Create(url);
                string content;
                WebResponse response = wrq.GetResponse();
                using (StreamReader rdr = new StreamReader(response.GetResponseStream()))
                {
                    content = rdr.ReadToEnd();
                } // using rdr
    Ответ написан
    Комментировать
  • Почему не работает $ в регулярном выражение после lookahead'а?

    @cicatrix
    было бы большой ошибкой думать
    У вас текст однострочный или многострочный?

    Попробуйте в разных режимах:
    Параметры регулярных выражений

    Multiline (?m) Использовать многострочный режим, где ^ и $ соответствуют началу и концу строки текста (а не началу и концу входной строки).

    Singleline (?s) Использовать однострочный режим, где точка (.) соответствует любому символу (а не каждому) символу, кроме \n).
    Ответ написан
    Комментировать
  • Почему Image.FromStream бросает "Недопустимый параметр"?

    @cicatrix
    было бы большой ошибкой думать
    Из вашего вопроса мало что понятно, попробую задействовать телепатию.
    Скорее всего, вы разрабатываете веб-приложение.
    Скорее всего, вы пытаетесь загрузить файл через веб-интерфейс.
    Если мои предположения верны, то стоит начать с того, что, наверное, единственным на текущий момент способом загрузить файл из браузера является POST запрос в формате multipart/form-data. Если это так, что входящий поток из запроса не содержит только ваш файл. Двоичные данные картинки "обёрнуты" ещё и дополнительной служебной информацией. Пройдите по ссылке, в статье на Википедии прямо пример есть содержимого вашего входящего потока.

    Если вы по какой-то причине пользуетесь веб-сокетами (причём, реализующими протокол http), то, чтобы вам помочь, нужно больше деталей.
    Ответ написан
    5 комментариев
  • Как добавить данные в один exe с помощью другого exe?

    @cicatrix
    было бы большой ошибкой думать
    Для винды сохранение данных (когда программы работают не одновременно):
    1. Файловая система
    2. База данных
    3. Реестр (в винде)

    При одновременной работе (в винде) можно воспользоваться следующими каналами:
    1. Именованные каналы (Named pipes)
    2. Сообщения Windows (Messages)
    3. Сокет TCP/IP
    4. Разделяемая память
    Ответ написан
    Комментировать
  • NancyFx как узнать время выполнения асинхронного запроса?

    @cicatrix
    было бы большой ошибкой думать
    Собственно, вне зависимости от конкретной реализации, вам нужно "засекать" время начала и время окончания задания, смотреть на их разницу.
    В зависимости от того, какое именно вам требуется время (с учётом транспорта до сервера или без его учёта), засекать может как вызывающий компонент, так и сама запускаемая задача.
    Ответ написан
    Комментировать
  • Конвертация строки при получении из бд, как исправить?

    @cicatrix
    было бы большой ошибкой думать
    ExecuteScalar выдаст вам ровно то, что хранится в БД. Экранирование, видимо, происходит позднее.
    Если вы пишете на Razor, пользуйтесь Html.Raw(ваша строка)
    Ответ написан
  • Почему в большинстве университетов C# стал заменять Java?

    @cicatrix
    было бы большой ошибкой думать
    На самом деле, если отбросить лобби и прочие теории заговора, есть одно (не моё), но подслушанное мнение:
    На C# любую вещь, можно сделать нормально одним, максимум двумя, нормальными способами. На Java это может быть 20 различных (и даже, в какой-то мере, нормальных) способов. Учиться на этом можно, но на C# проще.
    Ответ написан
    2 комментария
  • Как удалить такие дубли из списка C#?

    @cicatrix
    было бы большой ошибкой думать
    Список большой?

    Вот адская регулярка, которая выбирает вообще любые ссылки из любого текста.
    Вам нужны группы с 1-й по 6-ю.
    ((https?|ftp):\/\/)?([a-z0-9+!*(),;?&=.-]+(:[a-z0-9+!*(),;?&=.-]+)?@)?([a-z0-9\-\.]*)\.(([a-z]{2,4})|([0-9]{1,3}\.([0-9]{1,3})\.([0-9]{1,3})))(:[0-9]{2,5})?(\/([a-z0-9+%-]\.?)+)*\/?(\?[a-z+&$_.-][a-z0-9;:@&%=+/.-]*)?(#[a-z_.-][a-z0-9+$%_.-]*)?


    Тесты здесь

    .
    Ответ написан
    Комментировать
  • Использование дочернего свойства?

    @cicatrix
    было бы большой ошибкой думать
    Вы не можете управлять потомками (совсем как в жизни).
    Есть ключевое слово sealed - оно не позволяет наследовать данное свойство или метод потомкам, но это же означает, что вам необходимо реализовать его в базовом классе.
    Потомок может переопределить поведение базового класса вообще полностью (правда, тогда непонятно, зачем он его наследовал, но в теории, из родителя вы ничего с этим поделать не можете).
    Ответ написан
    Комментировать
  • Кто может обьяснить?

    @cicatrix
    было бы большой ошибкой думать
    1. Странно, Master Page прекрасно описана в MSDN, в гугле забанили?

    2. Сложно сказать, кто выродил термин "шкала", судя по всему это перечисление, где каждый следующий элемент имеет значениями степени двойки. Таким образом, в одной целочисленной переменной размерности N бит может быть установлено 2^N комбинаций различных флагов (проще рассматривать это как набор битовых переключателей, где каждый бит отвечает за какой-либо параметр.

    Пример из MSDN
    Ответ написан
    Комментировать
  • Что такое Net Framework и язык C#?

    @cicatrix
    было бы большой ошибкой думать
    Опускаясь до уровня "на пальцах":
    Например, можно написать программу на ассемблере (поскольку он платформеннозависимый), ваша программа будет выполняться, например, только на процессорах архитектуры x86. При этом, вам придётся писать эту же программу для другой архитектуры.

    Поднимемся выше. Напишем программу на C или С++. Она уже отчасти платформеннонезависима, так как при компиляции на разных архитектурах, та или иная реализация компилятора учитывает особенности платформы и генерирует совместимый машинный код. Но допустим, вам необходимо написать что-то сложнее hello world. Вы ищете подходящий функционал в стандартных библиотеках и, допустим, не находите. Зато вы находите подходящую библиотеку А, но вдруг выясняется, что она использует компоненты сторонней библиотеки Б, которая ...
    Ну, в целом, цепочка зависимостей может быть весьма длинной. И вот, ваш проект, ради одной фичи обрастает кучей зависимостей. Более того, вы сталкиваетесь с проблемами лицензирования, так как программный код, который вы гуглите и скачиваете из интернетов, скорее всего распространяется как Open Source, а значит - вы не можете закрывать свой исходный код (всё немного сложнее, но если ваши намерения по распространению своего проекта выходят несколько дальше, чем лабораторная работа по информатике, эти проблемы могут возникнуть).
    У вас может возникнуть желание написать свой "велосипед" под себя, но, тем самым, вы тратите время на создание некоего вспомогательного компонента, и вообще, ваша программа не про это.

    Теперь перейдём к .Net Framework. Разработчики постарались для вас и написали несколько десятков (или сотен) тысяч классов практически подо все умозрительные задачи, которые могут вам понадобиться, то есть это "кубики лего", позволяющие вам БЫСТРО писать приложения, сосредоточившись на логике вашей программы.
    Вам не надо реализовывать свой файловый ввод-вывод, работу с сетью, криптографию, коллекции, работу с базами данных и пр. Всё уже есть, всё пишется в 1-2 строки. Всё готово к употреблению.

    Как же этим пользоваться? В объектами фреймворка можно работать на нескольких языках: C#, VB.Net, F# и что там ещё напридумывали, все они взаимодействуют с Common Language Runtime и имеют доступ ко всем классам фреймворка.
    Ответ написан
    3 комментария
  • Что делать с возможным пробелом в регулярном выражении?

    @cicatrix
    было бы большой ошибкой думать
    А где само выражение-то?
    В целом, если вам просто надо обрезать лишние пробелы с начала или конца, достаточно сделать mbVal.Trim()
    А уже потом прогонять его через RegEx
    Ответ написан
    4 комментария
  • Как изменить код и стоит ли, чтобы не было предупреждения CA1009 анализатора кода?

    @cicatrix
    было бы большой ошибкой думать
    Если у вас (или у вашего тимлида) нет ОКР, то можно и suppress сделать.
    НО!

    Тут при повторном рассмотрении углядел, что вы в obj передаёте не ссылку на объект, который событие отправляет, а какой-то параметр. В этом случае это действительно может ввести в заблуждение (как ввело меня только что, например, когда я подумал, что вы параметры не передаёте, а только ссылку на отправителя события). Я, не зная вашего кода, вижу событие и ОЖИДАЮ стандартного шаблона (особенно если вы используете тип object), и здесь мой шаблон "рвётся" :)

    Во-первых, есть класс ProgressEventArgs, который служит ровно той цели, что вы здесь "свелосипедили".

    Стиль написания кода - это, если уж честно, догма от Майкрософт, и вещь субъективная. Однако, нельзя считать эту догму плохой. Она задаёт общий шаблон для написания кода и позволяет потом легко свои решения масштабировать.

    В общем, это ваше решение. Если код закрытый и никто, кроме вас его больше не увидит, и вы уверены, что и через несколько лет вы, просматривая этот фрагмент, будете чётко знать, что на самом деле в объекте obj типа object вы передаёте в событии целочисленный параметр состояния прогресса, то можете делать suppress этому кейсу.
    Если же вы планируете публиковать этот код (это часть Open Source) проекта, то вердикт однозначный - переписывайте.
    Ответ написан
  • На сколько хорошо подходит C# в роли сервера для игры?

    @cicatrix
    было бы большой ошибкой думать
    Сервер можно писать хоть на bash скриптах. И это тоже будет сервер. Вы определитесь для начала с количеством клиентов, объёмом трафика от сервера к клиенту и обратно, объём обрабатываемых данных и т. д. Выбор языка - это последнее, что вас должно сейчас заботить, так как "узкие места" и "бутылочные горловины" вы скорее обнаружите в серверном железе при росте количества пользователей. После того, как вы определитесь с этими переменными, выбирайте подходящую технологию.
    Ответ написан
    Комментировать
  • Передача информации между программами, правильно ли сделал?

    @cicatrix
    было бы большой ошибкой думать
    См. выше - Named Pipes (Именованные каналы) - это то, что нам рекомендует Microsoft (да и самое простое, если честно).
    Впрочем, ради масштабируемости, можете рассмотреть связь по TCP/IP (да, да, в пределах одного компьютера через 127.0.0.1 тоже можно). Это, кстати, позволит потом легко масштабировать программу до сетевого взаимодействия.
    Ответ написан
  • Что ж, как начать кодить(на C#)?

    @cicatrix
    было бы большой ошибкой думать
    Есть много ресурсов вроде coding game, hackers rank, code wars.
    Там можно не только участвовать в соревнованиях, но и тренироваться. Получаете задачу, решаете, затем можете посмотреть, как эту же задачу решили другие. В целом, очень помогает в изучении языка - можно выбирать и сложность задачи и тему.

    P.S. А вот без чего нельзя обойтись программисту, так это без английского языка. По моему мнению, обучиться программированию, не зная английского, попросту невозможно.
    Ответ написан