rksoftware

Visual Studio とか C# とかが好きです

C#

オブジェクトのプロパティ/フィールドの名前と値を配列にする

C#

オブジェクトのプロパティ/フィールドの名前と値を配列にしたいことが、あまりないかもしれませんが、たまにはあるかもしれません。 今がそのたまにです。 大したコードではないですが、検索する方もいるかもしれないのでメモ。 概要 リフレクションで名前と…

Generic Host でコマンドライン引数を扱う

最近コマンドライン引数をいろいろ頑張っていますが、実は標準の Generic Host ではデフォルトでコマンドライン引数を扱う機能があります。 こんなコードになります。 using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInje…

構造体のプロパティに値をセットする

C#

リフレクションを使って構造体のプロパティに値をセットする方法です。 クラスと同じように書いてはうまくいかなかったのでメモ。 ■ 参照情報(答え) ここを見ればすべてが解決します。 ■ リンクをクリックするのが面倒な方へ クラスと同じように書くと期待通…

コマンドライン引数を雑に扱う (4)

C#

以前にコマンドライン引数を雑に扱う記事を書きました。 コンソールアプリ、ちょっとした処理を行う際に雑に作ってしまうのが結構いいのですが、何気にコマンドライン引数の解釈コードが面倒です。 それはもう、あらゆる要素をソースコードに書き込んで毎回…

コマンドライン引数を雑に扱う (3)

C#

以前にコマンドライン引数を雑に扱う記事を書きました。 コンソールアプリ、ちょっとした処理を行う際に雑に作ってしまうのが結構いいのですが、何気にコマンドライン引数の解釈コードが面倒です。 それはもう、あらゆる要素をソースコードに書き込んで毎回…

コマンドライン引数を雑に扱う (2)

C#

以前にコマンドライン引数を雑に扱う記事を書きました。 コンソールアプリ、ちょっとした処理を行う際に雑に作ってしまうのが結構いいのですが、何気にコマンドライン引数の解釈コードが面倒です。 それはもう、あらゆる要素をソースコードに書き込んで毎回…

大文字小文字を区別せずにプロパティ情報を取得する

C#

PropertyInfo を取得する際、大文字小文字を区別して取得したい方は非常にまれだと思います。 大多数の大文字小文字を区別せずに PropertyInfo を取得したい方向けのお話です。ちなみに私も大文字小文字を区別せずに PropertyInfo を取得したい派です。 ■ Bi…

コマンドライン引数を雑に扱う

C#

コンソールアプリ、ちょっとした処理を行う際に雑に作ってしまうのが結構いいのですが、何気にコマンドライン引数の解釈コードが面倒です。 それはもう、あらゆる要素をソースコードに書き込んで毎回ソースコード上の値を書き換えてビルドして使うほどに。 …

.NET で DI する

.NET のコンソールアプリで DI する最低限の要素をメモします。 詳しくはこちら ■ コード やはりコードがわかりやすいと思うので、まずコードを。 using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using IHost host =…

C# で Moq でモックを使ったテストをする

今回は C# で Moq でモックを使ったテストをする最低限の要素をメモします。 ■ テストプロジェクトの作成 コマンドで作成できます。 今回は NUnit で進めていこうと思うので、NUnit プロジェクトを作成します。プロジェクト名は SampleTestProject としてみ…

画像のサイズを変更したいだけなら part2

以前にピクセル編集の API とピクセル編集が遅いという記事を書きました。 画像のサイズを変更したいだけならもっと早いやり方の記事を書きました。 System.Drawing.Graphics を使った方がもう少し早いかもしれません。 単純に画像のサイズ (縮小・拡大) を…

画像のサイズを変更したいだけなら

以前にピクセル編集の API とピクセル編集が遅いという記事を書きました。 単純に画像のサイズ (縮小・拡大) を変更したいというだけであれば、もっと早くて簡単な次の方法で良かったです。 例えば縦横 25% のサイズにする場合 using System.Drawing.Bitmap …

dotnet tool の作り方

次のサイトに載っています。 簡単に作ってみましょう。 console アプリを作る dotnet tool はコンソールアプリなのでまずは普通にコンソールアプリを作っていきます。 .NET アプリはコマンドでプロジェクトを作れるのでコマンドで作っていきます。ここではア…

System.Drawing.Common は今後使わないようにしたい話

.NET 6 で画像を加工するコードを書いています。 これまで、.NET でも System.Drawin.Bitmap クラス、System.Drawin.Graphics クラスを使ってきました。 System.Drwing.Common NuGet パッケージをインストールすれば使えましたし。 Linux でも libgdiplus を…

Visual Studio のアップデート 16.11.6 がリリースされました。

C#

Visual Studio のアップデート 16.11.6 がリリースされました。 ■ 更新内容 ■ 機能の追加 Android 12 の API のサポートを追加。 問題の解決 VSInstr が終了しないことがある。 C ++ IntelliSense の不具合。 特定の条件下で fsi (fsharp-interactive ( dotn…

AsyncMethodBuilder のオーバーライド

C#

■ C# 10.0 での新機能 ・AsyncMethodBuilder のオーバーライド (AsyncMethodBuilder override) https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/improved-definite-assignment 非同期メソッド (async メソッド) …

補間された文字列の改善

C#

■ C# 10.0 での新機能 ・補間された文字列の改善 (ImprovedInterpolatedStrings) https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/improved-interpolated-strings ロギングフレームワークなどを想定した文字列補…

定数の補間文字列

C#

■ C# 10.0 での新機能 ・定数の補間文字列 (Constant interpolated strings) https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/constant_interpolated_strings const string の定義で値に文字列補間が使えるように…

ラムダの機能強化 ラムダ属性

C#

■ C# 10.0 での新機能 ・ラムダの機能強化 ラムダ属性 (Lambda improvements) https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/lambda-improvements ラムダで属性が使える、また return 値の型も書ける。メソッド…

呼び出し元の引数の式

C#

■ C# 10.0 での新機能 ・呼び出し元の引数の式 (Caller argument expression) https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/caller-argument-expression 引数の部分で書かれた式を呼び出し先のメソッドで文字…

強化された #line ディレクティブ

C#

■ C# 10.0 での新機能 ・強化された #line ディレクティブ (Enhanced #line directives) https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/caller-argument-expression #line ディレクティブで Razor などで正しい…

汎用属性

C#

■ C# 10.0 での新機能 ・汎用属性 (Generic attributes) https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/generic-attributes 属性クラスでジェネリクスが使える。 [Sample<int>] void Method() {; } class SampleAttr</int>…

明確な代入分析の改善

C#

■ C# 10.0 での新機能 ・明確な代入分析の改善 (Improved definite assignment analysis) https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/improved-definite-assignment 変数に値がセットされているかの分析が機…

拡張プロパティのパターン

C#

■ C# 10.0 での新機能 ・拡張プロパティのパターン (Extended property patterns) https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/extended-property-patterns プロパティの中のオブジェクトのプロパティをシン…

ファイル スコープの名前空間

C#

■ C# 10.0 での新機能 ・ファイル スコープの名前空間 (File scoped namespaces) https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/file-scoped-namespaces ファイルの先頭で名前空間を書くだけで、ファイル全体に…

グローバルな using ディレクティブ (2)

C#

■ C# 10.0 での新機能 ・グローバルな using ディレクティブ (Global using directive) https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/globalusingdirective どこかの1ファイルで using するだけですべてのフ…

グローバルな using ディレクティブ

C#

■ C# 10.0 での新機能 ・グローバルな using ディレクティブ (Global using directive) https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/globalusingdirective どこかの1ファイルで using するだけですべてのフ…

パラメーターなしの構造体コンストラクター

C#

■ C# 10.0 での新機能 ・パラメーターなしの構造体コンストラクター ( Parameterless struct constructors) https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/parameterless-struct-constructors 構造体でパラメー…

レコード構造体 (2)

C#

■ C# 10.0 での新機能 ・レコード構造体 ( Record structs ) https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/record-structs 以前はクラスでしか作れなかったレコードが構造体でも作れるようになった。ただし標…

レコード構造体

C#

■ C# 10.0 での新機能 ・レコード構造体 ( Record structs ) https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/record-structs 以前はクラスでしか作れなかったレコードが構造体でも作れるようになった。ただし標…