月別アーカイブ: 2017年6月

ちょっと雑だが、C# で JsonProvider もどきを作る

F# には TypeProvider というのがあって、動的にクラスを作り、それを F# のコードで扱えるものです。 F# Data: JSON 型プロバイダー https://fsharp.github.io/FSharp.Data/ja/library/JsonProvider.html でもって、C# には TypeProvider がないんので F# が羨ましかったり、いやそう言うなら F# で組めばいい訳ですが。以前、F# の XAML の TypeProvider を作ったときに、そのまま Xamarin の PCL には持って行けなくて諦めた覚えがあるんですが。今だともうちょっと工夫できるかも、ってことで、C# で TypeBuilder を使ってみます。 雑に JsonProvider を作る JSON の文字列を渡して、それをプロパティに持つクラスを作ります。実は、New … 続きを読む

カテゴリー: 開発 | コメントする

TypeBuilderを使って、既存のクラスにメソッドを生やす

継承可能なDynamicObjectを作ろうとしたが挫折中 | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/8672 なところで、Xamarin.Forms からイベントを探索しているのはリフレクションを使っているなあ、ということが分かったので、じゃあ元のクラスに仮のメソッドをつけて無視すればいいのでは?と考えました。 XAML で、Clicked イベントがついていた時に ↓なように、動的に Button_Click を生やしたいわけです。 本来ならば、コンパイル時にメソッド名が決まっていればよいので、普通に ContentPage を継承してあらかじめコードで Button_Click を付けておけばよいのですが、XamlPreview のように XAML だけを送る場合は動的に Button_Click … 続きを読む

カテゴリー: 開発, Xamarin | コメントする

継承可能なDynamicObjectを作ろうとしたが挫折中

Xamarin.Forms 用の超軽量プレビューアを作る | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/8669 で、XAMLにクリックイベントが入っていると XamlLoader がパースエラーになるので、そのイベントをうまい具合に無視しなければいけないのですが、じゃあ、もともとある ContentPage クラスに後からイベントを追加できたらうまくスルーできるのではないか?と思って、継承可能な DynamicObject を探していました。 正確に言えば、DynamicObject は継承可能なので、 な感じで DynamicObject を継承した ViewModel を作っておいて、後追いで次のようにプロパティを増やすことが可能です。 dynamic なので、インテリセンスは効かないけど、うまくくるめ … 続きを読む

カテゴリー: 開発, XAML, Xamarin | コメントする

Xamarin.Forms 用の超軽量プレビューアを作る

自前の LoadFromXaml ができたので、実機に XAML を送り込んで表示するプレビューアを作ってみます。 その昔、 moonmile/XFormsPreviewer: Dynamic loading XAML file of Xamarin.Forms https://github.com/moonmile/XFormsPreviewer なるものを作り始めたのだが、自前で XAML をパースしているので、Forms のバージョンアップに追随できないし、そのうちに本家から Xamarin.Forms Previewer が出たり、Xamarin Live Player が出たりして、頓挫&忘れておりました。 が、どうも、俺の思っているプレビューアと違う、と思っていた次第で、やっぱり軽量なものを作ってみようかと。 コード moonmile/XFormsXamlDynamicLoad … 続きを読む

カテゴリー: 開発, Xamarin | コメントする

リフレクションを使ってXamarin.FormsにXAMLを動的ロードする

ふと、LoadFromXaml が public になれば、と思って探して、Xamarin.Forms のコードを見ていったら、 Load Xaml Dynamically At Runtime ? Xamarin Forums https://forums.xamarin.com/discussion/87727/load-xaml-dynamically-at-runtime Please make XamlLoader Public ? Xamarin Forums https://forums.xamarin.com/discussion/87810/please-make-xamlloader-public 需要はあるようなないような。以前、動的にロードしたかったのは Xamarin Live Player 以前の頃だったので、既にあるからまあ特にいらんだろうという感じもするし、 … 続きを読む

カテゴリー: 開発, XAML, Xamarin | コメントする

F#でXamarin.Formsを使う

いつからできるようになったんだっけ? Petzold Book Blog – Writing Xamarin.Forms Apps in F# http://www.charlespetzold.com/blog/2015/10/Writing-Xamarin-Forms-Apps-in-FSharp.html なところなので、実は随分前からある。 で、Visual Studio for Mac の「Blank Forms App」で F# が選べるようになっていたので試してみる。ちなみに、Windows のほうの Visual Studio 2017 には F# のテンプレートがないので、Mac で作ったものを Windows 側にコピーしている。 テンプレートが少しおかしいらしく、Android のほうの Xamarin.Forms が入らない(入れようとしてエラーになって … 続きを読む

カテゴリー: 開発, F#, Xamarin | コメントする

Xamarin.Forms で .NET Standard を利用してファイルアクセスするまで

Xamarin.Forms プロジェクトのPCLを .NET Standard 化する方法を調べていくと、Visual Studio 2017 のリリース前だったりするので、project.json の変更があって「あれ?」となってしまうので、ちょっと記録的に。 ちなみに、この記事も半年ぐらい経つと意味がなくなるような気がするので、まあ、そのときはそのときで。 Xamarin.Formsでプロジェクトを作る 普通にXamarin.FormsでPCLを使ったプロジェクトを作ります。 Visual Studio 2017 の場合は、コード共有で「ポータブルクラスライブラリ」のほうを選択。 .NET Standard のクラスライブラリを追加する [Visual C#]→[.NET Standard]で、「クラスライブラリ(.NET Stanrdard)」を追加 .NET Standardのプロ … 続きを読む

カテゴリー: 開発, Xamarin | コメントする