• C#. Почему нельзя обратиться к классу другого проекта, если в том проекте нет метода Main ()?

    @carbon88
    .NET developer/ORM developer
    Смотрите, я вижу две ситуации
    1) Проект А это приложение то есть имеет расширение EXE. Проект Б это подключаемая библиотека то есть dll.
    2) Проект А и проект Б это оба приложения то есть имеют расширение EXE. (предполагаю у вас именно так).

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

    Давайте я вам немножко доп. инфы про .net отсыплю. Дело в том что в .NET и .exe и .dll файлы это сборки и они имеют практически идентичную структуру, различие только в том что в валидной .exe сборке обязательно есть этот самый метод MAIN.
    я может сейчас взорву вам мозг, но проект приложения может использовать ссылки и на .dll и на .exe .net-сборки и я очень даже уверен что смогу зареференсить .exe сборку в проект .dll сборки. такие вот дела

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

    вы легко можете сменить тип одного из проектов на библиотеку классов и будет вам счастье.
    Ответ написан
    1 комментарий
  • C#. Где может быть полезна явная реализация интерфейса?

    Valeriy1991
    @Valeriy1991
    Разработчик .NET C# (ASP.NET MVC) в Alfa-B, Moscow
    Добрый день! Интерфейсы (как и абстрактные классы) позволяют (с точки зрения архитектуры) Вам разрабатывать слабо связанные приложения. Это, в свою очередь, приводит к тому, что: 1) внести изменения в код становится проще; 2) приложение не зависит от конкретных реализаций, а зависит от абстракций.
    Ответ написан
    2 комментария
  • C#. Где может быть полезна явная реализация интерфейса?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Я иногда делаю в классе и обычный метод, и явно реализуемый, с тем же именем, для удобства.
    Например, иногда нужен компарер как объект с методом, а иногда объект не нужен, и тогда можно вызывать статический метод.
    public class NaturalComparer : IComparer<string>
    {
    	[DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]
    	private static extern int StrCmpLogicalW(string psz1, string psz2);
    
    	public static int Compare(string x, string y)
    	{
    		return StrCmpLogicalW(x, y);
    	}
    
    	int IComparer<string>.Compare(string x, string y)
    	{
    		return StrCmpLogicalW(x, y);
    	}
    }
    
    public class TestApp
    {
    	public static void Main()
    	{
    		// Используем явную реализацию
    		var arr = new [] { "a5", "a1", "a10", "a3", "a7" };
    		Array.Sort(arr); // a1, a10, a3, a5, a7
    		Array.Sort(arr, new NaturalComparer()); // a1, a3, a5, a7, a10
    
    		// Используем статический метод
    		var list = new List<string> { "a5", "a1", "a10", "a3", "a7" };
    		const string max = "a4";
    		var minElements1 = list.Where(s => s.CompareTo(max) < 0).ToList(); // a1, a10, a3
    		var minElements2 = list.Where(s => NaturalComparer.Compare(s, max) < 0).ToList(); // a1, a3
    	}
    }
    Ответ написан
    Комментировать
  • C#. Где может быть полезна явная реализация интерфейса?

    @Sing303
    Тут кратко описывается, зачем нужны интерфейсы
    sergeyteplyakov.blogspot.ru/2014/12/what-are-inter...
    Ответ написан
    Комментировать
  • C#. Где может быть полезна явная реализация интерфейса?

    @JuniorNoobie
    Сижу в поддержке, пишу мелкие проекты
    Ну есть у вас, предположим, два интерфейса (IDollar и IEuro) в которых описан метод с одним и тем же именем (getPrice). Если у вас случится так, что будет класс (Car), который будет реализовывать эти интерфейсы, то для корректной работы, а именно, чтобы возвращать цену в долларах и евро, необходимо явно реализовать оба метода интерфейсов в классе и вызывать так:

    (IEuro)car.getPrice() - цена в евро
    (IDollar)car.getPrice() - цена в долларах
    Ответ написан
    2 комментария
  • Робот на arduino, есть перспективы?

    riky
    @riky
    Laravel
    Dima Kim: мнения бывалых такие: если интересно - занимайтесь (хотя бы для саморазвития), если не интеренсо - не занимайтесь.
    шанс что дойдет до внедрения близок к нулю, тк подобных вещей много и продвигаются большими компаниями.

    к тому же работать с камерой и "идентификации подозрительных предметов" на ардуино будет крайне сложно, изза его очень низких возможностей.
    Ответ написан
    Комментировать
  • Как развиваться мануальному тестеру, не уходя в автоматизацию?

    @who_is_it
    Мануальный тестер мануальному тестеру рознь. Можно просто найти багу, а можно сразу же продиагностировать проблему найти причину, чтобы не тратить на это время разработчиков. Мануальный тестер, как по мне, поднимая хард скилы, может совершенствоваться до бесконечности(разбор трейсов и результатов диагностики, вплоть до дебага и просмотра кода).
    Ответ написан
    Комментировать
  • Что такое COM-технология простыми словами?

    aenikitin
    @aenikitin
    Инфраструктурный администратор
    Самая простая аналогия - это элементы Лего. COM-объекты это и есть такие кубики использовать которые может каждый в своем наборе Лего (читай - программе).
    Ответ написан
    1 комментарий
  • О должностях: тестировщик в английском эквиваленте = test engineer?

    @azShoo
    Неожиданно, но аналог "Тестировщика" в английском это "Tester" (Software\Mobile App\Game).
    Так же бессмысленно и абстрактно.

    В остальном же, есть примерно следующая градация:
    Software Test Engineer - аналог Инженера по тестированию.
    Вполне себе рядовой тестировщик (не путать с monkey clicker).
    Software Developer in Test - Разработчик в тестировании. Разрабатывает тулзы, фреймворки и прочее необходимое для тестирования. В остальном - самый обычный разработчик.

    QA - более широкое понятие, чем тестирование.
    Но там в общем тоже куча должностей, включая QA Engineer, QA Automation Engineer, QA Analyst и пр. Которые, сторого говоря, тоже занимаются тестированием, но в целом их задача - контроль качества.
    Ответ написан
    Комментировать
  • Playstation: выбрать игры для человека с ограниченными возможностями (не работает левая рука)?

    Q2W
    @Q2W
    А как на счёт руля? В принципе им можно управлять одной рукой, хоть и не так удобно.
    Ответ написан
    Комментировать