shuhelohelo’s blog

Xamarin.Forms多めです.

C#

Xamarin.Formsでデザイン時の仮データを定義する方法

montemagno.com docs.microsoft.com techcommunity.microsoft.com Design Time Dataとはアプリを実行せずに,XAMLでのUIデザイン時に表示させる仮のデータのこと. これによってViewModelなどの表示させるデータが出来上がっていない段階でも,仮のデータを表示…

Xamarin.FormsでSignalR

これまでのWebページ,WPFからSignalRでサーバーと通信する方法に関しては以下の記事. shuhelohelo.hatenablog.com shuhelohelo.hatenablog.com ASP.NET Core SignalRはリアルタイム通信をアプリケーションに追加するプロセスを簡略化するアプリケーションモ…

Xamarin.Formsで各種センサーの値を取得するには[引越記事]

はじめに スマートフォンは各種センサーもりもり、通信インターフェース複数、RFIDリーダライタなど全部乗せのリッチなIoTデバイスです。 加速度センサー、磁気センサー、照度センサー、GPS(センサーか?)、Wifi、BlueTooth、カメラ、マイクetc etc... 実…

プロパティの変更通知でPropertyChangedEventArgsが大量に生成されるのが気になるときは

INortifyPropertyChangedを実装してプロパティの変更をView側に通知するには,変更された際にPropertyChangedEventArgsのインスタンスを生成してPropertyChangedEventHandlerの実行時にパラメータとして渡す必要がある. あるプロパティの更新が非常に頻繁だと…

SignalRの自動再接続をもう少しくわしく.

環境 Windows 10 pro 1906 Visual Studio 2019 16.4 preview1 dotnet core 3.0.100 自動再接続を有効にする SignalRの自動再接続を有効にするには,HubConnectionBuilderのインスタンス生成でwithAutomaticReconnect()を追加するだけ. Javascriptの例: www.je…

SignalRでプロパティを持つオブジェクトを渡す. WPF ⇔ Server

環境 Windows 10 pro 1906 Visual Studio 2019 16.4 preview1 dotnet core 3.0.100 前回までは単純なstring型をサーバーとクライアント間でやりとりしていました. shuhelohelo.hatenablog.com 当然そのような基本型だけでなく,以下のようなプロパティを持つ…

SignalRの自動再接続

環境 Windows 10 pro 1906 Visual Studio 2019 16.4 preview1 dotnet core 3.0.100 前回はサーバーとSignalRで通信を行うクライアントをWPFで作成しました. shuhelohelo.hatenablog.com リアルタイム通信ですが途中で接続が切れてしまった場合に自動的に再接…

WPFからSignalRでサーバーとリアルタイム通信

前回はサーバとブラウザ間でSignalRを用いた通信を試してみました. shuhelohelo.hatenablog.com 今回は,デスクトップアプリケーションからSignalRを使ってサーバーと通信してみます. チュートリアルは以下の公式サイトが参考になるでしょう. docs.microsoft.…

.NET Conf 2019のSignalRのデモを動かす

www.youtube.com こちらの動画を見ながら,1つ目のデモと同じリアルタイムチャットアプリを作る. ソースコードは公開されていないが,画面を凝視すればコードが読めるし,説明は丁寧でわかりやすい. 環境 Windows 10 pro 1906 Visual Studio 2019 16.4 preview1…

Visual StudioでのASP.NET Coreアプリ開発におけるクライアントサイドライブラリの導入はLibManが便利

ウェブアプリケーションのクライアントサイドの開発には様々なライブラリを使用します. jQuery Bootstrap Chart.js などなど,必要に応じてCDNから取得したりするわけですが,CDNを使わない場合だってあって,その場合はローカルにこれらのライブラリをダウンロ…

null合体(??)とnull合体代入(??=)とnull条件(?.または?[])

C#

ufcpp.net Null合体演算子 左辺がNullだったら右辺を返す. string? s = null; var s1 = s ?? "this is null1"; Console.WriteLine(s1); Null合体代入演算子 左辺がNullだったら右辺を左辺に代入する. string? s = null; s ??= "this is null2"; Console.Writ…

Visual Studioで警告もエラーとして扱うようにする

警告は出ていたとしてもビルドは通るし実行もできる. しかし,だからといってそれで良いというわけではなく,実行に問題はないとしてもパフォーマンスに影響があったり,バグの原因になったりするため,修正するべきもの. この警告を厳密に許可しないようにする…

コマンドラインから.NETソリューションを作ってプロジェクトを追加する

コマンドラインからプロジェクトを作成する方法は以下で書いた. shuhelohelo.hatenablog.com 上記の記事ではプロジェクトファイルを作成して実行していたが,多くの場合はソリューションを作成して,その中にプロジェクトを作成していくと思う. 今回はソリュー…

コマンドラインでC#プログラミング[引越記事]

はじめに C#でプログラミングをする場合、Visual Studioは非常に便利で強力な開発ツールです。しかしながら、例えば、ネット上のコードスニペットをちょっと実行してみたいときとか、ちょっとした処理をさせるための数行のアプリケーションを作成したいとき…

Nullを代入するということ

C#

確認: オブジェクトは参照型なので、以下のような「ある変数にオブジェクトのインスタンスを代入(しているような記述)」するというのはそのインスタンスへの参照(ポインタ)を代入するということ。 var a = new MyObject(10); というのは、MyObjectのイ…

Prismを使ってXamarin.Formsアプリを作るときのメモ[引越記事]

はじめに モバイルに限らずアプリケーションの開発というと難しく感じられるかもしれませんが、シンプルなアプリケーションであれば「こうしたいときはこう書く」みたいな基本的なパターンを知っておくだけで作ることができます。 それはVisual Studioのよう…

ASP.NET Coreでファイルをアップロードする

ViewModelにIFormFile型のプロパティを用意する。 using Microsoft.AspNetCore.Http; namespace MyApp.ViewModels.UploadFile { public class UploadFileViewModel { public IFormFile SelectedFile { get; set; } } } View側でアップロードするファイルを選…

C#で文字列でプロパティにアクセス

C#

qiita.com インデックスでアクセスする方法が便利そう。リフレクション。 早速やってみよう。 まずはプロパティをいくつか追加する。 そしてusing System.Reflectionを追加する。わかりやすいように初期値も入れておく。 using System.Reflection; namespace…

プロジェクトに追加したファイルのプロパティの「出力ディレクトリにコピー」とは

Visual Studioで以下のようにプロジェクト内にフォルダを作ってファイルを置くことができます。 この追加したファイルのプロパティを開いてみましょう。 プロパティの開くには、ソリューションエクスプローラー上でファイルを右クリックしてコンテキストメニ…

C#でファイルの相対パスはどこ基準?

C#

例えばFile.OpenRead(filePath)メソッドなどでファイルにアクセスするとき、filePathを相対パスで指定したとき、それはどこ基準なのでしょうか。 これは「アプリケーションの実行ファイルのパス」が基準になります。 一つコンソールアプリケーションを作成し…

Visual Studioでファイルの「ビルドアクション」って何なの?[引越記事]

はじめに 追記:こちらがとても詳しいことがわかりました。 僕が書いた記事はもしかしたら役に立つかもしれません( ;∀;) Visual Studioでアプリケーションを作成するときに、アプリケーションにテキストファイルや画像ファイルなどいろいろなファイルを追加…

プロジェクト内のテキストファイルを読み込む方法 ~埋め込みリソース~[引越記事]

C#

はじめに (注:AssemblyクラスはSystem.Reflection名前空間です) アプリケーションを作成するときに、何らかのテキストファイルをアプリケーション内に持たせておいて、内部での処理や表示のために使いたいことがあります。 正しい方法かどうかは置いとい…

プロジェクト内のテキストファイルを読み込む方法 ~Resource~[引越記事]

C#

いきなり追記(2018.10.15) @Zuishinさんより教えていただいた方法だと、ビルドアクションにResourceを設定したファイルに非常にスマートにアクセスできます。@Zuishinさんありがとうございます。 さて、ファイルの追加、ビルドアクションの設定の仕方は僕…

すでにあるWPFアプリをマテリアルデザインにする[引越記事]

<2018年一人アドベントカレンダー9日目> はじめに 何番煎じかという内容です。 こちらを参考に自分で手を動かしてみたことの備忘録です。 さて、いつもと違うデザインでアプリを作ってみると、とても新鮮に感じられてテンションが上ります。 NugetでMateri…

Is金曜日()メソッド

C#

金曜日だけの拡張メソッド。 他の曜日?何ですか、それ? public static class DateTimeOffsetExtensions { public static bool IsFriday(this DateTimeOffset dateTime) { return dateTime.DayOfWeek == DayOfWeek.Friday; } }

Fluent Assertionを使う

環境 Windows 10 1903 Visual Studio 2019 16.3 preview2 .NET Core 2.1 FluentAssertions 5.8.0 はじめに FluentAssertionsはC#の単体テストフレームワークです。 このフレームワークを使うことで単体テストのコードがどのように書けるのかは、公式サイトの…

ASP.NET CoreでIdentityのバリデーションメッセージを日本語化する

ASP.NETはパスワードやEmailの入力に対するバリデーションの機能がついていて便利です。 便利なのですが、デフォルトでは英語です。これを日本語で表示させる必要があったりします。 今回は認証機能(Identity)のバリデーションに関するメッセージの日本語…

DBの状態を、指定したマイグレーション適用時点まで戻す

DBの状態を、指定したマイグレーション適用時点まで戻したい場合がある。 まずはそのマイグレーションIDを調べる。 マイグレーションファイルはソリューションエクスプローラのMigrationsフォルダ内に存在存在する。 このマイグレーションファイルの名前がマ…

ASP.NET CoreでIdentityUser、IdentityRoleにカラムを追加する。

環境 Windows 10 Pro 1903 Visual Studio 2019 ASP.NET Core 2.1 ASP.NET Coreでユーザー認証、認可にIdentityを使用する場合、元から用意されているIdentityUser、IdentityRoleなどにプロパティ(DB上のカラム)を追加したい場合がある。 ここでは、Identit…

C#でジェネリックと型引数と型制約

C#

ジェネリッククラスについて自分なりのまとめ。 List<T> といった、任意の型を指定できるクラス。 型引数について 正確ではないけれど、型引数はジェネリッククラスの中でプレースホルダーのように使われるイメージ。 ジェネリッククラスを使う際に型引数に具体</t>…