C#
EditorConfigを作成してC#プロジェクトに適用することができました。 ponta-memo.hatenablog.com せっかくEditorConfigを作成したので既存のソースを一気に修正してくれると助かります。 そこでVisual Studioのコードクリーンアップ機能を使います。 【注意…
2026/3時点においては、 StyleCop ではなく、 EditorConfigでコーディングスタイルを適用することが主流です。 EditorConfigとは「異なるエディタや IDE の間で、コーディングスタイル(インデントや改行など)の共通ルールを適用できる設定ファイル」のこと…
MAUIでクリップボードへテキストをコピペするサービスを作成しました。 考え方は他の開発フレームワークでも使えるのではないかと思います。 ソースコードの格納先とサンプルアプリケーション(Windows) サンプルアプリケーション サービス(ClipboardService)…
通常、SingleOrDefault()メソッドは(条件を指定した場合は条件を満たす)重複した要素が見つかった場合、InvalidOperationExceptionをスローします。 たまに例外を発生するほど重要な処理ではないなと思うケースがあるので、発生しないバージョンの拡張メソ…
多言語対応しているとぶつかる常識の違いという壁。 下表のように日本とフランスでは、ピリオドとカンマの意味が逆になっています。 そのため、ユーザが入力した数値の文字列を誤った解釈で変換してしまうと全く違う大きさの値になります。 文字列 言語 値(e…
初学者がプログラミングの勉強方法として電卓などの簡単なアプリケーションを作るのは良い方法だと思っています。 今回は曲がりなりにもプログラミングを経験した自分が、電卓を少し設計して作りました。 ソースコード類 ソースコードとアプリケーションの実…
async/awaitを使えば良いのですが、既に同期メソッドで実装された処理をバックグラウンドで実行しつつ例外をキャッチしたいときもあるかと思います。 Task.GetAwaiter() . GetResult() で Task.Run() でバックグラウンドで実行した処理を待ちます。 少し冗長…
以下のようなドット(円)型のプログレスリングをWPFで実装する方法です。 Dot progress ring ソースコードは GitHubに置いています。 github.com ※ プログレスリング部のView(XAML)は ProgressRingControl.xamlです。 プログレスリングの仕組みはMAUIの時と…
ドット(円)から構成されたプログレスリングをMAUIアプリケーションで実装してみました。 実装したプログレスリングは以下の通りです。GifはWindowアプリですが、Androidエミュレータでも同じ挙動であることを確認しました。 DotProgressRing. 実装したソース…
XMLスキーマ定義からC#クラスを自動生成できます( 方法: XML スキーマ定義ツールを使用してクラスと XML スキーマ ドキュメントを生成する )。 この方法と同様にJsonスキーマ定義からC#クラスを自動生成する方法を探してみたところ、「NJsonSchema.CodeGen…
今更ながら、WPFでファイルのDrag & Dropを実装する必要があったので、ビヘイビアを作成しました。 事前準備 作成したBehaviorのソースコード サンプル つまづいたポイント 1. Visual Studioを管理者権限で実行している場合 2. 添付プロパティ(DropFileAndF…
学生時代にモンテカルロ法を使ったシミュレーションをC言語またはFortranを使って実施していました。 モンテカルロ法では乱数の質が大切なのですが、優れた乱数の一つとして メルセンヌ・ツイスタ (Mersenne Twister) という疑似乱数生成アルゴリズムがあ…
はじめに 何らかのオブジェクトをコピー & ペーストできる機能を実装する機会は、エンジニアを続けていると出会う確率が高いと思います。 そこでコピー & ペーストの実装例をMAUI (C#)でサンプルアプリケーションを作成したのでご紹介します。 初めてコピー …
"#FFEE08"のようなカラーコードからColor (日本語版)構造体を取得する方法のメモ。 ステップは以下の通り。 1) カラーコードはパターンが決まっているので、正規表現を使用して対象文字列がカラーコードであるかを判定する。 カラーコード 正規表現 RGB "^#[…
Color (日本語版)から#FFEE08のようなカラーコードを取得する方法のメモ。 Color構造体はアルファ値、RGBを表すプロパティ、"A", "R", "G", "B"を持っているため、この値を用いればよい。 ソースコード RGBコード、ARGBコードをそれぞれ出力する拡張メソッド…
MAUIの Entry でバリデーションエラーがある場合、Entryを赤線で囲む + エラー内容をEntryの下に表示するという簡単なEntryを作成してみました。 完成後のEntry (ValidatableEntry) 表示例 使い方 ValidatbleEntryが今回作ったコントロールです。 View側 Has…
.NET MAUIには Display pop-upsにある通り、デフォルトのポップアップ(メッセージボックス)が用意されています。 ポップアップを表示するには、Page.DisplayAlertメソッドをコールすればよいです。 つまり、MVVMではViewModel内のCommandメソッドまたはCom…
Visual Studioで.NETのアプリケーションをリリースビルドすると、 デバッグシンボル: PDBファイル(.pdb)がデフォルトで作成されます。 社内配布、OSSのアプリ、外部ユーザがアプリケーションのビルドファイルにアクセス出来ない場合は気にする必要はないです…
.NETでは、Add/Removeなどの基本的な変更操作をListと同じように扱えてスレッドセーフなリストとして SynchronizedCollection<T> が提供されています 。 .NET Reference Source を見ると、.NET Frameworkにもあります(過去はinternalで実装されていて外部から</t>…
C#のList<T>で、Addメソッドを実行すると末尾に要素が追加されます。 先頭に要素を追加するには Insert(int index, T item) メソッドを用いれば実現できます。 Insertメソッドの第一引数(index)に0を指定して、追加対象の要素を第二引数(item)に指定するだけで</t>…
WPFやXamarinで便利なDesignInstanceだけれど、MAUIで全く同じものはない。 だけど、d:DataContext={d:DesignInstance }をMAUIで設定するには、x:DataTypeを使用するとできるみたい。 試しに、XAML側のBindingでViewModelのプロパティ(WelcomeText)がインテ…
AppShellのShellContentをXAMLからではなく、C#コードで追加するにはAppShell.ItemsへShellContentオブジェクトを追加するとできるみたい。 以下は、MainPage(ShellContent)をAppShell.xaml.cs側で追加する。 C# public partial class AppShell { public App…
.NET MAUIでAppへ依存性注入できることがわかった。 以下のようにダミークラスとインターフェースを用意して、Appへ依存性注入できるかを確認してみた。 実行してみると、App()は正常起動・終了した。 また、IServiceProvderは何もしなくても注入できた。 C#…
リストの最後の要素を削除するためには、最後の要素のインデックスを取得後、RemoveAt(Int32) で取得したインデックスを指定して削除すればよいです。 ただし、RemoveAt(Int32)は読み取り専用のリストである場合、例外が発生するため注意が必要です。 下記は…