Не совсем понял — при использовании флаттер, UI нужно писать отдельно для каждой платформы? Или гугл выпустил какой-то набор компонент, которые по разному отображаются в зависимости от платформы?
Хм, если честно у меня более прозаическая догадка.
Игрался с таким кодом
Заголовок спойлера
public class CustomClass
{
public override string ToString()
{
return "CUSTOM";
}
public virtual object SomeVirtualMethod()
{
return "SomeVirtualMethod";
}
public object SomeMethod()
{
return "SomeMethod";
}
}
[StructLayout(LayoutKind.Explicit)]
public class CustomStructWithLayout
{
[FieldOffset(0)]
public string Str;
[FieldOffset(0)]
public CustomClass SomeInstance;
}
class Program
{
static void Main(string[] args)
{
CustomStructWithLayout instance = new CustomStructWithLayout();
instance.SomeInstance = new CustomClass();
instance.Str = "4564";
Console.WriteLine(instance.SomeInstance.GetType()); //System.String
Console.WriteLine(instance.SomeInstance.ToString()); //4564
Console.WriteLine(instance.SomeInstance.SomeMethod()); // SomeMethod
Console.WriteLine(instance.SomeInstance.SomeVirtualMethod()); // null
}
}
И как мне кажется, для виртуального метода CLR генерит метод-заглушку, возвращающий дефолтное значение.
Поскольку, насколько я понимаю, для вызова виртуального метода CLR необходимо действительно найти этот метод в иерархии типа, и так как метода SomeVirtualMethod нет в иерархии типа string, то и возвращается эта заглушка.
Разрядка для мозгов: Что будет выведено при вызове виртуального свойства CustomClass?
А можно для не просвящённых почему так?
Я понимаю, какой был бы результат, если бы свойство было не виртуальным, но почему возвращается null для виртуального я не догоняю.
Мне бы хотелось получить что-нибудь вроде MethodNotFoundException.
Не использовать Ajax.BeginForm, использовать FormData, сделать php обработчик и еще тучи советов по увеличению программного кода.
Думаю, стоило прислушаться к совету и не использовать Ajax.BeginForm.
Кода получилось бы меньше, да и получился бы он более поддерживаемым. А с учётом кучи JS библиотек, задачу вы решили бы быстрее.
Да и логику вашего обработчика/хелпера я так и не понял.
Если хотите с проверкой типов, то можно юзать tsx, часть typescript'a.
Кавычки будут (это же xml всё-таки), всё остальное верно.
Может и вкусовщина, но мне кажется, было бы гораздо легче тех же реакт нативщиков перевести на флаттер.
Всё это относится и к jsx.
уже есть транслятор jsx во флаттер?
Да, спасибо.
Как реализовать понятно, вопрос о том, есть ли уже готовое.
Ещё вопрос — неужели всех устраивает монструозный (как по мне) трёхэтажный синтаксис описания виджетов? Есть ли планы по разработке подобия jsx?
Понял, спасибо.
Для react native существует, например, nativebase.io, который под каждую платформу отображает нативный элемент.
Видимо, для флаттер придётся подождать сообщества.
Не совсем понял — при использовании флаттер, UI нужно писать отдельно для каждой платформы? Или гугл выпустил какой-то набор компонент, которые по разному отображаются в зависимости от платформы?
Хабр съел ссылку. Подход называется Contextual Validation. Гуглится на сайте Фаулера.
https://martinfowler.com/bliki/ContextualValidation.html
Про Do/CanDo в своё писал Фаулер.
Да я понял о каких книгах речь, спасибо :)
Ну так какую?
Хм, если честно у меня более прозаическая догадка.
Игрался с таким кодом
И как мне кажется, для виртуального метода CLR генерит метод-заглушку, возвращающий дефолтное значение.
Поскольку, насколько я понимаю, для вызова виртуального метода CLR необходимо действительно найти этот метод в иерархии типа, и так как метода
SomeVirtualMethod
нет в иерархии типаstring
, то и возвращается эта заглушка.А можно для не просвящённых почему так?
Я понимаю, какой был бы результат, если бы свойство было не виртуальным, но почему возвращается
null
для виртуального я не догоняю.Мне бы хотелось получить что-нибудь вроде
MethodNotFoundException
.Думаю, стоило прислушаться к совету и не использовать Ajax.BeginForm.
Кода получилось бы меньше, да и получился бы он более поддерживаемым. А с учётом кучи JS библиотек, задачу вы решили бы быстрее.
Да и логику вашего обработчика/хелпера я так и не понял.
Не так давно я мониторил место на диске и обнаружил 4гб папку в профиле хрома — indexeddb от my.mail.ru. При этом я даж хз когда я туда заходил.
юзайте сагу наконец
Ну, в общем-то, в статье. Под заголовками "Код без cross-cutting concern" и "Код с cross-cutting concern"