nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Visual Studio and Development Technologies。なお掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Hello, Azure API Apps with Xamarin.Forms

前回、Azure API Appの簡単な利用方法を解説しました。

www.nuits.jp

今回は、これをXamarin.Formsから利用してみましょう。

  • Xamarinプロジェクトを作成する
  • XamarinにAPI App呼び出しを組み込む
    • MainPageViewModelの作成
    • MainPage.xamlの修正
    • APIクライアントの組込み
  • さあ動かしてみよう!
続きを読む

Hello, Azure API App with .NET Core

本エントリーでは、Microsoft Azure上でWeb(REST) APIを構築するAPI App初心者向けのエントリーです。

対象読者は以下を想定しています。

  • Azureのアカウントは作成した
  • API App使いたいけど何も分からない
  • とりあえずAPIを公開して呼び出すところまでの手引きが欲しい(要はHello, Worldレベル)
  • Visual StudioやC#は、利用経験があり環境構築済みである(Visual Studio 2017 Windows版を想定)
  • とりあえず無料で試したい

大丈夫。私も右も左も分からない中からできたので、誰でもできます。

なお本エントリーではRESTクライアントも自動生成しますが、それはXamarinからも利用可能なもの。。。のはずです。まだ試していませんが、.NET Standardで動くので動くでしょうきっと(とは言え、.NET Standard 1.4以上が必要なので、PCLからは利用できません)。

なお、この手の記事は鮮度が非常に重要です。
本エントリーは2017年7月11日時点の情報に則って記載しています。

それでは解説を始めましょう。

続きを読む

.NET Standardや.NET Coreでmscorlib 2.0.5.0の参照がないと怒られた場合の対処方法

.NET StandardのプロジェクトからPCLのプロジェクトを無理やり参照しようとしたような場合に発生します。
PackageTargetFallbackを指定しているような場合です。

System.~系への参照が、PCLでは明示的にバージョンが指定されているが.NET Standard側では明示的に指定しないから?見たいですが正確には良く分かりません。
良く分かりませんが、NuGetから次のCompatibilityパッケージをインストールすることで対応可能です。

www.nuget.org

これは過渡的な対応で、.NET Standard 2.0や.NET Core 2.0がリリースされると心配は不要になるようです?

Xamarin.Forms.BehaviorsPack 1.2.0をリリースしました。

新たにSelectedItemBehaviorを追加しました。

ListViewで選択された行のItemを引数にCommandを実行するシンプルなBehaviorです。
EventToCommandBehaviorでも似たことはできますが、SelectedItemBehaviorはCommand実行後にSelectedItemを解除することができる点が異なります。
解除の有無はClearSelectedプロパティで制御することができ、falseを設定するとCommand実行後も選択されたままになります。

以下がサンプルコードとなります。

XAML Sample

<ListView ItemsSource="{Binding Fruits}">
    <ListView.Behaviors>
        <behaviorsPack:SelectedItemBehavior Command="{Binding SelectedFruitCommand}"/>
    </ListView.Behaviors>

C# Sample

public IList<Fruit> Fruits { get; } = new List<Fruit>();

public ICommand SelectedFruitCommand => new Command<Fruit>(fruit =>
{
    ....
});

本ライブラリはNuGetから利用可能です。

www.nuget.org

以上です。

Xamarin.Formsで「ビルド アクション 'EmbeddedResource' は、プロジェクトのターゲットの 1 つ以上でサポートされていません。」の解決方法

2017年7月現在、良く遭遇します。
最初に開いたソリューションで良くなるかも。

起きたら、ソリューションを閉じて開き直したら99%直ります。
ゴミみたいな記事でゴメン(´・ω・`)

追記:

Service LocatorとDependency InjectionパターンとDI Container

一度ちゃんとまとめておこうと思いまして書いてみました。
本エントリーでは次の点を整理したいと思います。

  • ServiceLocatorパターンとは何か?
  • Dependency Injection(以降DI)とは何か?
  • DI Containerとは何か?
  • これらを使うと何がうれしいのか?
  • ServiceLocatorとDI何が違うのか?
  • ServiceLocatorとDIどちらを使うべきか?

別に、それほど真新しい事は書いていませんが、諸事情あって人に説明しないといけないのでせっかくなのでこちらにも公開します。

続きを読む

アプリケーションオブジェクト ライフサイクルパターン

アプリケーションを構築する際に、登場するオブジェクトの生存期間は多岐にわたります。

  • ユーザーがインターフェースからアクションを起こしたときに、それに伴うインタラクションが完了するまでの間だけ生存するオブジェクト。
  • アプリケーション起動から終了までの間、常に共有されるオブジェクト。

などです。
私はその生存期間は幾つかのパターンに分類することができると考えています。
そしてこれらの多くの要素は、UIのアーキテクチャによらず類似したパターンに則ることができるとも考えています。
極端な話、スマートデバイスのネイティブ実装でも、Windowsアプリでも、Webアプリでも考えるべき事は同じです。

別に特別な事は書いていませんし、恐らく多くの人が似たような事を考え、実際の開発時に採用していることだと思います。
特別な事は書いていないとも言えますが、本エントリーでは、私の考えるオブジェクトのライフサイクルパターンと、その留意点について再整理してみました。

なお本エントリーのライフサイクルの名称は完全に(もしくは一部は)オレオレ用語で一般的な概念とは限りませんので、取り扱いにご注意ください。

続きを読む