c#

コンピュータ

C# JSONで派生クラスのコレクションをシリアライズ・デシリアライズする方法(リフレクションで自動生成)

JSON形式でシリアライズするということは、オブジェクトを文字列として表現することを意味します。文字列化できるということは、その内容をテキストファイルとして保存することで、データを永続化することができます。また、保存された文字列をデシリアラ...
コンピュータ

C# Reflectionで派生クラスを自動登録する(Plugin型アーキテクチャ)

クラスを定義するだけで勝手に使われるPluginのような振る舞いのサンプルコードを作成しました。abstract class BaseClass(){ abstract public void Apply();}class DerivedC...
コンピュータ

dotnet newで自分用WPF MVVMテンプレートを作る

WPFアプリを何度も作っていると、毎回同じファイルを用意したくなります。 例えば、MainWindowViewModel.cs、RelayCommand.cs、 そしてMainWindow.xamlのDataContext設定などです。 こ...
スポンサーリンク
コンピュータ

C#のnamespaceで名前を分ける理由

C#では、クラスや構造体などの型をまとめるためにnamespace(名前空間)という仕組みがあります。通常はアプリケーションごとにnamespaceを決めて、そこにクラスを配置します。namespace MyApplication{ cla...
コンピュータ

C#でnamespace(名前空間)にエイリアス(別名)を付けることで名前の衝突を避ける。

OpenCVSharpを使っていて、RectやPointなどのクラスの名前がWPFなどの既存のクラス名と被ることがあります。namespaceのエイリアスを定義することで回避出来るとのことですので調べてみました。基本的な書き方using S...
コンピュータ

C#からTesseract OCRを扱うサンプルコード

NuGet パッケージ追加dotnet add package Tesseracttessdata の取得GitHubのリポジトリjpn.traineddatajpn_vert.traineddataを ./tessdata フォルダに配置...
コンピュータ

C#でLiteDBを永続Dictionaryとして使う ― SSDを非揮発疑似メモリとして使う ―

以前書いた基礎記事: では、LiteDBの基本的な使い方を紹介しました。 今回は少し視点を変えて、 LiteDBを「永続Dictionary」=SSD上の疑似メモリとして使う という発想で整理してみます。 1. LiteDBは「永続Dict...
コンピュータ

C#でファイルの「コメント」プロパティを編集する方法【.NET 10 / WindowsAPICodePack】

エクスプローラで動画ファイルのプロパティで「詳細」のタブで、タイトルやコメントなどのメタ情報を記録することが出来ます。こちらのプロパティは、このまま編集することも出来ますが、沢山のファイルを書き換える場合、プログラムから書き換える方法を知っ...
コンピュータ

C#の書き方を学習する:メソッドチェーン・コードブロック・ラムダ式・オブジェクト初期化子

メソッドチェーン代表例はLINQが挙げられます。var result = items .Where(x => x.IsActive) .Select(x => x.Value) .OrderBy(x => x) .Take(10) .ToL...
コンピュータ

C#のコンソールアプリをグローバル ツールとしてインストールする。

C#のコンソールアプリをパッケージ管理システムのような感じに、インストール・アンインストールする仕組みがあるので、試してみたいと思います。参考プロジェクトの作成dotnet new console -n hellocd hellocode ...
コンピュータ

C#でアプリを作る場合に必要となる知識の整理【オブジェクトのライフサイクル・アクセス修飾子】

アプリ(WPFでGUI)を作成していてC#の言語的基礎知識を確認する必要があり整理してみました。あくまで筆者の学習している内容ですので、誤り勘違い等があるかもしれませんが、ご了承ください。オブジェクトのライフサイクルライフサイクルという言葉...
コンピュータ

C#のList<T>で要素を入れ替える

C#でコレクションを扱っていると、 並び順を変更したい ドラッグ&ドロップで要素を入れ替えたい 特定の2要素だけを交換したいといった場面があります。この記事では、List<T> の要素を入れ替える方法を紹介します。インデックス指定で入れ替え...
コンピュータ

Mutex と NamedPipe で アプリの二重起動を禁止しながらコマンドライン引数を渡す

メモ帳はなぜタブで開くのかエクスプローラーでテキストファイルをダブルクリックすると、メモ帳が起動し、そのファイルが開かれます。その状態のまま、エクスプローラーで別のテキストファイルをダブルクリックすると、新しいメモ帳は起動せず、既に起動して...
コンピュータ

C#で作る最小DLLプラグイン構成

アプリの機能を拡張する方法として、プラグインという方法があります。Windowsの場合DLLファイルでプラグインを実現することが出来るので、試してみたいと思います。プロジェクトの作成手順作業ディレクトリの作成複数のプロジェクトをまとめたソリ...