Ответы пользователя по тегу C#
  • C#. Как получить значения из данного JSON?

    @basrach
    Добавьте атрибуты с названием полей, вот так:
    public partial class Joined
    {
    	[JsonProperty("avatar_url")]
    	public string AvatarUrl { get; set; }
    	[JsonProperty("display_name")]
    	public string DisplayName { get; set; }
    }
    Ответ написан
    Комментировать
  • Как с помощью регулярки C# удалить символ \?

    @basrach
    1. Regex.Replace(@"https:\/\/pp.userapi.com\/c841226\/v841226735\/72c15\/CrqCyt7DhCA.jpg", @"\\", "")
    2. HTML в общем случае невозможно описать регуляркой. Т.е. такая регулярка возможно будет косячить где-то, но в каких-то простых случаях отработает:
    var htmlString = ...
    var withoutTags = Regex.Replace(htmlString, @"<.*?>", ""); // удаляем теги
    var withoutSpaces = Regex.Replace(withoutTags, @"\s+", " "); // удаляем пробелы
    Ответ написан
    Комментировать
  • Проблема с DATETIME?

    @basrach
    Когда EF достает данные, можно сказать чтобы он даты считал в UTC.
    Посмотрите здесь и здесь.
    Ну дальше либо new DateTime(01.02.2018).ToUniversalTime(), либо new DateTime(31.01.2018, DateTimeKind.Utc)
    Ответ написан
    1 комментарий
  • Насколько ли плохи дефолтные контроллеры в ASP.NET MVC???

    @basrach
    Зависит полностью от вашей задачи. Вот сделали вы там что-то. Если это вас устраивает полностью, всё работает как надо, "они делают всё что необходимо" то значит и контроллеры и прочее - отличные. Может статься, что проект будет расти и усложняться. Когда дефолтные контроллеры + EF без дополнительных слоев абстракции перестанут "делать всё необходимое", а наоборот начнут только усложнять вам жизнь. Тогда вы сами поймете насколько и чем они плохи. До тех же пор, абсолютно ничего плохого в них нет.
    Ответ написан
    Комментировать
  • Как сделать выполнение функции после отсчета таймера одной секунды (не Thread.Sleep(1000)) в c#?

    @basrach
    this._timer = new System.Windows.Forms.Timer();
    this._timer.Interval = (int)TimeSpan.FromSeconds(1).TotalMilliseconds;
    this._timer.Tick += (e, args) =>
    {
    this._timer.Stop();
    if (card2 == 0)
    {
    pictureBox3.Image = System.Drawing.Image.FromFile (@"D:\Roma\card1.jpg");
    }
    };
    this._timer.Start();
    Ответ написан
    Комментировать
  • Как правильно запустить первым класс?

    @basrach
    Компилятор говорит, что не может понять какой параметр типа (generic type parameter) нужно подставить вместо TContext в метод SetInitializer и просит этот TContext указать явно. Но указывать явно на самом деле не нужно, нужно сделать так, чтобы StaticDbInitializer реализовывал интерфейс IDatabaseInitializer где контекст вероятно должен также быть унаследован от какого-нибудь DataContext-а.
    Первый шаг, который нужно предпринять - записать объявление класса как:
    public class StaticDbInitializer : IDatabaseInitializer
    {
    ....
    Где MyContext - класс, который представляет... некий контекст

    PS Локализованная IDE - зло
    Ответ написан
    Комментировать
  • Какие минусы могут вылезти в дальнейшем при такой примитивной реализации очереди задач?

    @basrach
    При такой реализации проблемы вылезут сразу, как только случится несколько одновременных запросов к вашей службе из-за отсутствия синхронизации потоков, если только вы не используете Single режим для службы. Но тогда непонятны заморочки c Parallel.ForEach и прочие очереди.
    1. в addCall несколько потоков могут попытаться добавить один и тот же ключ в словарь calls и это будет exception
    2. в invokeAll перед выходом очищается словарь calls, при этом на момент выходы из этого метода в нем вполне могут оказаться новые команды, которые будут также удалены
    3. Wait() перед выходом из AddDataToDevice заблокирует поток, который будет ждать окончания выполнения другого потока, который был запущен в Parallel.ForEach - странно выглядит
    4. В методе getInfo не обрабатывается ситуация отсутствия ключа в словаре, в таком случае будет выброшено исключение
    5. перед вызовом invokeAll не проверяется был ли завершен предыдущий вызов. Если первый вызов invokeAll не успел завершиться за минуту и придет второй, то тут вообще начнется каша от исключений при переборе ключей словаря, до отправки одних и тех же команд несколько раз
    6. Данные из словаря callsInfo не удаляются, что при длительной работе приведет к утечкам со всеми вытекающими
    Но если вы используете Single mode для WCF service-а, либо в один момент времени может быть только один запрос на сервис, то наверное будет работать.
    Ответ написан
    2 комментария