【C#】コンソールアプリでDIを使う

.NET 6 でコンソールアプリに DI (=Dependency Injection) 環境を作成して、オブジェクトに依存関係を注入するところまでを確認したいと思います。 使用するライブラリは、「Microsoft.Extensions.DependencyInjection」です。 確認環境 動作確認環境は以下…

【C#】コンソールアプリでHostBuilderを使う

ASP.NET 系のテンプレートで作成すると何も考えずとも汎用ホスト(=Generic Host) が使用可能、つまり、HostBuilder が利用可能な状態から始まりますが、コンソールアプリから始めると何も存在しないため HostBuilder が宣言しても見つからないため意外とどう…

【C#】連続で処理が失敗した時に何度も同じような処理をしない

例えば定周期処理などで、エラーが出ても処理を継続するような場合に、最初の一回は例外処理を行うけど、処理が連続で失敗した場合2回目以降は、処理を行わないようにする実装パターンの紹介です。 この仕組みを使用して実装例ではログを何度も出力しないよ…

VisualStudio2022でnull許容コンテキストを無効化する

VS2022 はデフォルトで「null 許容コンテキスト」というものが有効化されています。 これが有効化されていると以下のような警告が表示されます。 警告 CS8600 Null リテラルまたは Null の可能性がある値を Null 非許容型に変換しています。 警告 CS8601 Nul…

ASP.NET WebAPIでURLパラメーターを受け取る

URLパラメータ*1は、URLの最後に以下のように加えられた変数を指します。 https://localhost:8080/app/v1/data?code=100 この「code=100」の部分を ASP.NET Core Web API で受け取る方法です。 確認環境 .NET 6 + ASP.NET Core Web API VisualStudio 2022 Wi…

【C#】ViewModelの実装をスニペットで軽減する

WPF/UWP などの XAML 系実装で使用する ViewModel は OSS(Livet, Prism ReactiveProperty) などを使用しない場合、INotifyPropertyChanged 周りの実装が冗長で、繰り返しが面倒なので軽減策の紹介したいと思います。 アプローチ方法は以下の通りです。 共通…

【C#】WMIでOSのメモリ使用量を取得する

WMI(Windows Management Infrastructure)という機能を使うとWindowsのシステムの各種情報を取得することができます。今回はこの機能を使用して 確認環境 Windows10 VisualStudio 2019 .NET Framework 4.7.2 / .NET 5 プロジェクトの設定 WMI の機能を使用…

【Unity】スクリプトを変更するたびにコンパイルが走らないようにする

Unity を使用中にエディタでスクリプトを編集 → 保存すると Unity 上でスクリプトのコンパイルが実行され、その都度作業が中断されるのを防止する設定です。 スクリプトのコンパイルが走ると画面右下のチェックマークが回転するプログレスに変化して Unity …

VisualStuiodでCSSを階層インデントしない

VisualStudio でCSSを編集していると、CSSの名前に「.」とか「:」が入ると自動でインデントされてしまいますがこれをオフにする方法です。 例えばこんな感じになります。 .btn { top: 50%; left: 50%; height: 100%; color: #BFC3C7; font-size: 16px; paddi…

【Windows11】文字サイズを変更するとタイトルバーの高さおかしくなる

Windows11 では文字サイズを大きくすることができます。以下のサイトのように設定から大きくすることができます。 https://paso-kake.com/it/windows11/10982/ この設定でフォントを、大きくする → 元のサイズに戻す、操作後にタイトルバーの高さが大きくな…

【C#】Taskのキャンセル

2022-10-04 C# 標準の Task のキャンセルの方法です。 以下のように bool のフラグを使ってキャンセルするのは方法が簡単ですが、Task が想定するキャンセルの作法をの紹介になります。 簡易キャンセル フラグ使うほう。以下条件の時は別にこれでも大丈夫で…

【C#】INIファイルを読み書きする(DllImportなし)

INI ファイルを C# で読み書きするために DllImport で Windows の User32.dll 使うのは確かに簡単ですが汎用性に欠けると思うので、純粋な C# のみかつ、.NET 4.6 くらいからコピペで使えるライブラリを作成してみました。 ライブラリの性能 確認環境 形式…