Ответы пользователя по тегу C#
  • Как реализовать метод который возращал бы сумму List?

    @kttotto
    пофиг на чем писать
    Судя по Вашим комментариям, могу предположить такое решение
    public double TotalAmount(List<DataDevice> data)
    {
    	double sum = 0;;
    	for(var i = 1; i < data.Count; data++)
    	{
    		sum  += (data[i].Indication[0] - data[i-1].Indication[0]) * data[i].Price[0] + (data[i].Indication[1] - data[i-1].Indication[1]) * data[i].Price[1];
    		tempValue.Add(sumItem);
    	}
    	return sum;
    }
    Ответ написан
    Комментировать
  • Как форматировать в дату?

    @kttotto
    пофиг на чем писать
    Например так
    var dateTime = DateTime.Now;
    var dateStr = dateTime.ToString("dd.MM.yyyy HH:mm");

    возможные форматы
    Ответ написан
    Комментировать
  • Как использовать несколько Application.run в программе на c#?

    @kttotto
    пофиг на чем писать
    Никак. В одном потоке вы его два раза не запустите. Все UI формы, работают в одном потоке.
    Почему Вы не хотите отслеживать движение мыши стандартными сообщениями windowsforms?
    Если так сильно хотите запустить SetHook, то запускайте его до Application.Run в main, а управление отслеживанием делайте внутри этого хука по значению булевского флага, который будете уже изменять в start().
    Ответ написан
    Комментировать
  • Как решить ошибки, появившиеся после написания программы по переводу слов?

    @kttotto
    пофиг на чем писать
    Он не может быть рабочим, если есть такие ошибки. По видимому не подключены библиотеки или не указаны ссылки на проект, или не указаны пространства имен.
    Ответ написан
    8 комментариев
  • Получить текстовое представление формулы, записанной в коде, обратно в текст?

    @kttotto
    пофиг на чем писать
    Будет много скобочек, но если такой вариант устроит
    static void Main(string[] args)
    {
    	Expression<Func<double, double, double>> exp = (OTSTUP_SVAYA_MIN_B, D_SVAYA) => (OTSTUP_SVAYA_MIN_B * 2 + D_SVAYA * 3 + D_SVAYA);
    	var expBody = ((LambdaExpression)exp).Body.ToString();
    
    	Console.WriteLine(expBody);
    
    	double _OTSTUP_SVAYA_MIN_B = 1;
    	double _D_SVAYA = 2;
    
    	var expBodyWithParams = expBody.Replace("OTSTUP_SVAYA_MIN_B", _OTSTUP_SVAYA_MIN_B.ToString()).Replace("D_SVAYA", _D_SVAYA.ToString());
    
    	Console.WriteLine(expBodyWithParams);
    	Console.ReadKey();
    }


    Если грохать лишние скобочки, то дерево expBody надо обходить самостоятельно рекурсивно и строить строку уже на свой вкус.
    Ответ написан
  • Как полностью очистить массив?

    @kttotto
    пофиг на чем писать
    checkAddDel = new int[0]
    Массив всегда имеет предопределенную длину, которая не меняется, можно только создать новый с нужным размером.
    Ответ написан
    Комментировать
  • Как задать максимальный уровень для навигационный свойств при использовании include?

    @kttotto
    пофиг на чем писать
    Если Вы пытаетесь сериализовать ef объект в json, то JsonConvert в этом случает будет рекурсией обходить все поля внутри и конечно в какой то момент зациклится. Для таких случаев обычно мапят ef объект на свою модель и уже ее и сериализуют.

    Еще вот здесь есть такой вариант
    return JsonConvert.SerializeObject(results, Formatting.Indented, 
    new JsonSerializerSettings { 
        ReferenceLoopHandling = ReferenceLoopHandling.Ignore 
    });
    Ответ написан
    1 комментарий
  • Почему IndexOutOfRangeException: Array index is out of range?

    @kttotto
    пофиг на чем писать
    Наверняка потому, что tempCell.Length < Word.Length. На какой то итерации ошибка и вылезет.
    Ответ написан
    8 комментариев
  • Откуда может вылезать NullReference?

    @kttotto
    пофиг на чем писать
    Вам правильно пишут: без callstack невозможно узнать, где именно ошибка вылезла, может даже не в этом методе, может где-то внутри GeneratePairGame, может randomLevel = null. Нужно логировать Exception, заверните тело кейса внутрь try-catch
    case 2:
    	try
    	{
    		GeneratePairGame(randomLevel);
    		...
    		break;
    	}
    	catch(Exception ex)
    	{
    		Debug.Log(ex);
    	}

    Тогда будет точно видно где и что произошло.
    Ответ написан
    1 комментарий
  • Почему не верное решение в задании?

    @kttotto
    пофиг на чем писать
    Ваш код работает правильно. Возможно на ресурсе ошибка проверки верификации кода.5b00aeb4c2977467279845.png
    Ответ написан
    Комментировать
  • Правильное использование virtual, override, new?

    @kttotto
    пофиг на чем писать
    Значит ли это, что все методы следует делать виртуальными?

    Нет, не значит. Если разрешить переопределять все, то можно логику поломать. А если Вы пишите библиотеку и разрешите все и вся менять? Переопределять можно разрешать в местах, где используется стратегия: где есть обобщенный класс и наследуемые классы могут реализовывать собственную логику.
    Если вдруг, в процессе разработки, возникнет необходимость разрешить переопределение, то дописать override недолго.
    Ответ написан
    Комментировать
  • Как в RabbitMQ, или без него, настроить классическую очередь?

    @kttotto
    пофиг на чем писать
    Не совсем понятно, зачем очередь на каждом компьютере? По сути очередь нужна только на компьютере №2. Все клиенты отправляют на него отчет, отчеты кладутся в очередь, компьютер №1 забирает их из этой очереди. И очередь для того и нужна, чтобы не зависеть, в сети ли компьютер №1. Все сообщения будут лежать в очереди, пока первый их не заберет. Если в течении какого то времени сообщение не забрали, клиенту дается ответ, что первый не доступен и клиент через таймаут шлет очередное сообщение.

    Каждый клиент имеет свой идентификатор, каждый отчет свой идентификатор и если в очереди оказалось несколько сообщений от одного клиента и с одним идентификатором отчета, то учитывается последний по дате. Ну в принципе и все.
    Ответ написан
  • Используя метод return Json() на клиенте в success function(data) undefined. Как исправить?

    @kttotto
    пофиг на чем писать
    Сделайте запрос к своему api в строке браузера или через postman. Если придет нормальный json, значит дело в запросе ajax, в его настройках, если нет - значит не сериализуется объект в json.
    Ответ написан
    6 комментариев
  • Есть ли какие-либо недостатки у статических методов?

    @kttotto
    пофиг на чем писать
    В первую очередь статические методы и классы это не комильфо не потому, что не ООП, а потому, что во первых, дают жесткую привязку к коду, код становится негибким, а во вторых, тестировать код, наполненный статикой - проблемно, дают много зависимостей от которых не абстрагироваться. Плюс глобальная видимость.

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

    Если возникает необходимость сделать статические методы с логикой посерьезней фильтра списка, например, доступ к БД, то есть пара вариантов в этом случае. Первый, сделать синглтон, если хотите, чтобы была одна точка входа для доступа к БД и Вы хотите эту точку и попытки получения данных из БД контролировать.
    Второй, это иньекция зависимостей и контейнеры для них, всевозможные IoC. В настройках IoC указываете, что выдавать единственный экземпляр и он по сути сам станет singlton, фабрика контейнера не будет на каждое обращение создавать новый экземпляр.

    Лично я статическими методами и даже полями пользуюсь. Иметь хелперы, это удобно, но, конечно, без фанатизма.
    Ответ написан
    Комментировать
  • Как создать поле типа Generic List в классе?

    @kttotto
    пофиг на чем писать
    Если Вы хотите именно "при создании экземпляра класса в поле можно было записать List любого типа", то generic тип должен быть определен на стадии компиляции и если Вы явно не указали его тип, то компилятор пытается найти класс T в текущем пространстве имен, а его у Вас нет, от сюда и ошибка.

    Если нужно внутри класса использовать generic поле, то и класс Вы должны определить тем же типом.
    public partial class AddForm<T> : Form where T: class
    {
        public string itemToAdd { get; set; }
        public List<T> list { get; set; }
    
        public AddForm()
        {
            InitializeComponent();
        }
    }

    И при создании экземпляра формы указать
    var form = new AddForm<Album>()
    В этом случае поле List будет типизированно типом Album.

    Если же список внутри формы небольшой и можно пренебречь затратами на приведение типов, то можно сделать список типа object.
    public partial class AddForm : Form
    {
        public string itemToAdd { get; set; }
        public List<object> list { get; set; }
    
        public AddForm()
        {
            InitializeComponent();
        }
    }

    А доставать от туда по типу можно многими способами, например, если знаете заранее какой там тип то сделать привидение
    var albums = form.list.Cast<Album>();
    Если нет - то сделать фильтрацию по типу
    var albums = form.list.OfType<Album>();
    var photos = form.list.OfType<Photo>();
    Ответ написан
    Комментировать
  • Практики регулирования доступа к кэшированным (редко изменяемым) данным в условиях многопоточности?

    @kttotto
    пофиг на чем писать
    Если данные в кеше недействительны, то кэш сбрасывается и перечитывается по новой. Чтобы весь глобально не сбрасывать, его делят на слои и сбрасывают необходимый слой. Чтобы отдельно объект в кэше обновлять, такого не встречал.

    Если слои кэша в Concurrent списках, то без разницы, кто его в этот момент читает. Мы для кэша используем Lazy.

    Я так понимаю, что данные хоть и будут изменяться, то не часто, иначе нет смысла в кэше. В нашем случае, когда приходят новые данные или мы их обновляем, мы руками вызываем _cache.Layer.Reset()
    Ответ написан
    1 комментарий
  • Как передавать данные между контроллерами и представлениями?

    @kttotto
    пофиг на чем писать
    Изучите подробно концепцию MVC и зачем она нужна. Данные должны ходить от контроллера к представлению для отображения и с представления на контроллер. Больше никак. Никаких между представлениями и между контроллерами.
    Если Вы хотите хранить общие данные для всех представлений, то сохраняйте их либо в сесии (на стороне сервера), либо в куках (на стороне клиента). А index будет читать эти данные, например из куков и отображать в лайауте.
    Ответ написан
    Комментировать
  • Как решить проблему, не видит метод контроллера?

    @kttotto
    пофиг на чем писать
    Зачем Вы дублируете вопросы?
    Перейдите по ссылке localhost:17224/api/values/PostClientIdInController просто в строке браузера. Если попадете в свой контроллер, то он просто считает Ваш метод как Get. Над методом поставьте атрибут [HttpPost] и будет Вам счастье.
    Ответ написан
    Комментировать
  • Как решить проблему, не видит метод контроллера valuescontroller?

    @kttotto
    пофиг на чем писать
    Лучше сделайте через атрибут [HttpPost], а не приставку Post. По видимому он метод считает как Get, вот и не видит.
    Ответ написан
    Комментировать
  • Почему в контроллер не передаются данный?

    @kttotto
    пофиг на чем писать
    Попробуйте так
    public ActionResult Index([FromBody] string stat)
    Ну и конечно отправляться должен объект data: { stat: "Hello" }
    Ответ написан
    Комментировать