← All posts tagged C#

folex

Аксиома раз: нет JIT, только AOT. (Платформа виновата)
Аксиома два: нельзя использовать Emit (Джобс пидарас).

Как бы мне в рантайме заинжектить код во все методы? Так, что бы можно было например при вызове любого метода вывести в консоль "Метод METHOD_NAME вызван".

P.S. Ответы, противоречащие первым двум аксиомам так же принимаются.

Заранее спасибо.

P.P.S.
Как это сделать после компиляции я знаю (всякие Mono.Cecil и проч.), проблема в том, что мы не можем пока вклиниться в цикл сборки — Xamarin ХУЕВО генерирует мейк-файлы(не получается через них собирать), а вклиниться в нужный момент сборки в IDE нельзя — там либо prebuild, либо postbuild.

folex

Вывел в консоль через Reflection все свойства всех наследников UIView, что есть на экране — всё поломалось к чертовой матери. Половина кнопок не нажимается, половина UI сломалась. Збс.

folex

У меня появляется такое ощущение, что это говно вместо того, что бы в Delegate.Target (как бы контекст кложуры) класть ссылку на весь объект (контекст == объект в случае C#), кладет туда ссылку на объект того же типа, нотолько с нужными полями. Другими словами, если у нас был объект класса Thing { prop1; prop2; prop3 }, обладающий 3 своствами, а в кложуре мы использовали только prop1, то в Delegate (тип лямбды в C#) в поле Target (контекст) будет лежать объект типа Thing, но лишь с одним полем prop1.
Иногда поведение будет немного другое, и контекстом будет объект вида Thing { prop1 = someValue; prop2 = null; prop3 = null }.
ЧТОЗАЧЕМПОЧЕМУБЛЯДЬ

folex

Ну почему "." не может возвращать null, если по левую сторону от точки — null?
Вместо if (object.property1.property2.property3 != null) нужно писать
if (object != null)
if (object.property1 != null)
if (object.property1.property2 != null)
if (object.property1.property2.property3 != null)
Console.WriteLine ("C# is SHIT!");

folex

Арррргх. Ебаное говно. Переводит цшарпный код в скулайтный запрос на лету, вместо того, что бы сначала получать значения — это класс. Особенно если делать это ВСЕГДА, даже тогда, когда НЕ МОЖЕШЬ. Нет команды huygovnoequals в скулайте? Нет, мы не преобращуем ленивый запрос в данные, и не попробуем применить операцию для них, НЕТ. МЫ ХУЙНЕМ ЭКСЕПШН. А ЛУЧШЕ ДВА.

folex

Тайпклассов нету, duck typing хер сделаешь (в этих наших monotouch'ах нету Dynamic), "()" — не оператор, так что никаких плюсовых функторов, template specialization — фиг.
Пиздец.