@CSharpChatЭта группа больше не существует

Страница 1107 из 1888
Ilya
24.05.2017
10:41:36
просто скрой конкретные реализации за интерфейсами, а потом разберешься как подсунуть то что нужно. Может быть у тебя будет в конструктор передаваться этот интерфейс, может просто где то будет статическое свойство, к которому ты будешь обращаться.

Alexander
24.05.2017
10:48:24
Хз как на мобилках, но под разные версии .net framework делают препроцессорными директивами

Под мобилки так же наверное

Можно оба подхода совместить, т.е. сделать интерфейс, а реализацию выбирать под директивыми: #if OS1 _api = new Impl1(); #elif OS2 _api = new Impl2(); ...

Google
Ilya
24.05.2017
10:54:38
насколько я понял нужна одна библотека на все платформы, а так получится на каждую платформу своя библиотека

не то, чтобы это было плохо, просто стоит учитывать

Daniel
24.05.2017
11:01:33
Законопроект о запрете анонимности в мессенджерах внесен в Госдуму via @meduzaproject https://meduza.io/news/2017/05/24/zakonoproekt-o-zaprete-anonimnosti-v-messendzherah-vnesen-v-gosdumu

Му
24.05.2017
11:03:21
когда не можешь написать свой мессендер, начинаешь паразитировать на других

Nikita
24.05.2017
11:08:07
на авалонии это ловили уже

если в методе НЕ используются статические поля

то в момент его вызова статический конструктор НЕ будет вызван

смотри в ildasm

хотя твой случай от моего немного отличается

но оно в целом более лениво вызывает всё

Ilya
24.05.2017
11:17:36
но оно в целом более лениво вызывает всё
Никита, а чем смотреть код после jit компиляции?

Google
Egor
24.05.2017
11:47:31
есть
есть? а если я добавляю пустой статический конструктор - че будет?)

тем не менее я говорил про код, а не про ИЛ, это как показывать класс с одной пропертью и говорить: смотрите! поле! Его нет, но оно какбе есть

неявный статический конструктор и явный - две большие разницы

явный уберет с класса beforefieldinit и поведение поменяется

Ilya
24.05.2017
11:52:39
беда с тобой) только IL код важен, что там написано на C# или VB не столь важно

Egor
24.05.2017
11:54:08


Эквивалентный код?

Ilya
24.05.2017
11:54:37
да

Egor
24.05.2017
11:54:43
ну вот нихрена подобного

в обынчном дотнете у них будет разное поведение и перфоманс. в дотнет коре - разный перфоманс



Ilya
24.05.2017
11:57:14
это влияет на блокировки во время выполнения

именно поэтому разный перформанс

Egor
24.05.2017
11:58:08
не блокировки а тупо лишние проверки перед вызывами статических членов у D

Ilya
24.05.2017
11:58:13
вызываются они одинаково в одной и той же среде

Egor
24.05.2017
11:58:20
которые будут проверять - а про инициализировался

ну и как я сказал - в обычном дотнете моменты инициализации у C и D разные

что может привести к неожиданным последствиям, таким как те, с которыми я столкнулся

Egor
24.05.2017
12:04:19
я же уже два раза кидал тут - https://gist.github.com/EgorBo/6bcd2719209e5dd7470aaa65b8d89ead

Google
Egor
24.05.2017
12:04:53
замени в Foo на статический конструктор и запусти

Ilya
24.05.2017
12:05:14
дествительно поведение разное, но всё равно непонятно, какие это может вызвать проблемы?

Egor
24.05.2017
12:09:55
очевидно же - вызовется код, который не должен вызываться

в моем случае тот код содержал pinvoke

Ilya
24.05.2017
12:10:37
код в статическом конструкторе, который содержит вызовы Pinvoke? это точно то, что нужно?

Egor
24.05.2017
12:13:06
да

проинициализировать native dll перед работой

собсно я говорю о конкретном коде который все из вас юзают - внутрянка System.Data.dll

Ilya
24.05.2017
12:14:36
Оооо, и у тебя перфоманс проблема? или что то падает?

Egor
24.05.2017
12:16:58
перфоманс отдельная тема, есть паренек который недавно выкосил все явные статические конструкторы из дотнета где можно

а у меня - падал код

Ilya
24.05.2017
12:23:08
и как ты решил эту проблему?

Egor
24.05.2017
12:27:35
никак. так уж получилось что я тот класс смог выкинуть

но вообще можно было бы либо переписать на синглитон с геттером либо вставить пустой статический конструктор

за второе меня бы на вилы

Ilya
24.05.2017
12:29:06
мне кажется что здесь всё таки стоит править System.Data, чтобы он не вызывал ничего такого в статическом конструкторе

Pavel
24.05.2017
13:03:26
Подскажите, каким образом нынче предлагается использовать утилиты командной строки, которые с nuget-пакетами поставляются?

Есть, к примеру, XUnit.Runner - как мне оттуда консольную утилиту запустить после билда?

Nikolay
24.05.2017
13:04:12
Можно как-то обьявить Action/Func делегат через var?

Google
Pavel
24.05.2017
13:04:31
Func<int> getAnswer = () => 42;

Nikolay
24.05.2017
13:05:17
Func<int> getAnswer = () => 42;
Так я тоже умею

Думал может чего не знаю)

Pavel
24.05.2017
13:05:25
По-другому C# не умеет

Он не может понять, что ты объявляешь, Func<int> или Expression<Func<int>>

Nikolay
24.05.2017
13:06:21
Проблема с выводом типов понятна

Admin
ERROR: S client not available

Pavel
24.05.2017
13:07:05
мне нужно protoc из Google.ProtoBuf.Tools в pre-build экшне запустить

Nikolay
24.05.2017
13:07:11
Под nunit вроде отдельная тулза поставляется, которую ты запускать должен

Ещё видел, когда отдельно билдится .exe, который и запускает тесты

Pavel
24.05.2017
13:09:05
Раньше можно было написать ./packages/Google.ProtoBuf.Tools/tools/protoc ./MyProject/Contracts.proto —csharp_out и всё

А теперь MS решили почему-то, что это никому не надо

И сука кладут Google.ProtoBuf.Tools в жопу - читай в ~/.nuget

Nikolay
24.05.2017
13:10:18
Читай его)

Pavel
24.05.2017
13:11:05
Оно в разных местах лежит

для разных платформ

Arseniy
24.05.2017
13:13:30
DevCon School в июне кто-то был там, есть смысл идти? там интересно?

имеется в виду вообще DevCon School

Google
Igor
24.05.2017
13:16:09
И сука кладут Google.ProtoBuf.Tools в жопу - читай в ~/.nuget
Так хорошо же, всякие maven/gradle давно это делают - отличная экономия дискового места.

Pavel
24.05.2017
13:16:24
Ок, где мне раннер-то взять?

В смысле котогенератор protobuf-классов

сделали бы тогда dotnet nuget exec ...

полтора часа уже мучаюсь с тем, что всегда в пол пинка делалось

Igor
24.05.2017
13:18:29
Ок, где мне раннер-то взять?
А типа $HOME нельзя использовать? Или может MS добавляет что-то свое в переменное-окружение.

Pavel
24.05.2017
13:18:49
Мне на линукс машине это билдить надо

И на винде тоже

Nikita
24.05.2017
13:23:12
а что, там уже 4-ый ангулар?

мда

ЧЕТВЁРТЫЙ

наплодили-то

morlord
24.05.2017
13:23:30
А dotnet restore чем не помогает?

Pavel
24.05.2017
13:23:56
А чем оно помогает?

Nikolay
24.05.2017
13:24:07
Лол. Я думал с 4 ангуларом это мем такой :D

Nikita
24.05.2017
13:24:41
я к ним на сайт зашёл и узрел

Pavel
24.05.2017
13:24:42
~/.nuget/packages/google.protobuf.tools/3.3.0/tools/windows_x64/protoc.exe --csharp_out=./GraphQL/IDL ./GraphQL/IDL/Contracts.proto

Alexander
24.05.2017
13:24:58
Это тот же второй считай)

Pavel
24.05.2017
13:25:01
Как версию отсюда вытащить пакета и windows_x64 нормально запустить?

Nikita
24.05.2017
13:28:34
а bridge.net кто-нибудь в продакшне использовал?

Страница 1107 из 1888

Эта группа больше не существует Эта группа больше не существует