c# 逆XMLシリアル化時に改行を維持する

C# のデスクトップアプリで設定を保存する方法は色々と選択肢があっていつも悩む。

  • ApplicationSettingsBase
  • レジストリ
  • INIファイル
  • 自前で処理

個人的には自作の設定クラスを定義してシリアライズする方法をよく使うが、先日マルチラインが有効になっているテキストボックスの内容を保存したところ「逆XMLシリアル化時に改行が消える」という症状にぶちあたったので解決策をメモっておく。

設定クラス

とりあえず設定値を格納するクラスを定義。

    public class Test
    {
        public string Value = string.Empty;
    }

実際はもっと大量に項目があるがサンプルなので一つだけ。
当然シリアル化できない型を含んではダメ。(Dictionaryとか)
続きを読む


リニューアルしてみた

いままでお世話になっていた mono-lab さんの monochrome も良かったのですが、最近スマホやタブレットで見てくださる方も増えてきたのでレスポンシブな感じにしようかなと思ったわけです。

というわけで、巷で話題の Simplicity にしてみました。

外観に拘るほうではないので細かいカスタマイズはせずに「ほぼデフォルト」で使用します。

シンプルこそ正義!

これでスマホ等でみても読みやすくなったのではないでしょうか?

(相変わらずテーブル使ってる記事などは読みにくいですが・・・)


C# プラグイン方式で動的にDLLを読み込む

C#でプラグイン風の機能を使ってみたのでメモ。

基本的なポイントは次の通り。

  • 所定のディレクトリにあるプラグインを読み込む
  • プラグイン自体は.NET FrameworkのDLL
  • プラグインDLLは共通のインターフェイスをもつ

サンプルプロジェクトの構成

Visual Studio のソリューションにプロジェクトを4つ作成。

プロジェクト名 種類 参照設定 備考
HogeMain Windows フォームアプリケーション HogePlugin,Namihei,Fune スタートアッププロジェクト
HogePlugin クラスライブラリ プラグインのインターフェイス
Namihei クラスライブラリ HogePlugin プラグイン1
Fune クラスライブラリ HogePlugin プラグイン2

プラグインの共通仕様をDLLにして共有する(HogePlugin)。中身は普通のインターフェイス。

HogeMain でプラグイン(Hamihei,Fune)を参照設定しているのは、実行フォルダにプラグインDLLを作成する為だけの目的なので本来は必要ない。

HogeMain にテキストボックスを1つ追加すれば準備完了。
続きを読む


C# ウインドウメッセージによるプロセス間通信

C# プロセス間通信をしてみたのでメモ。

正道を行くならIPCチャンネルを使う選択が正しいのかもしれないが、面倒くさいしよく分からないので比較的簡単に実装できるウインドウメッセージを用いた方法にしてみた。

ただしこの方法には次の制限アリ。

  1. 同じ PC 上のプロセス間のみ
  2. GUI のあるアプリケーション

ウインドウ宛てにメッセージ送るわけなので当然といえば当然。

やりかたそのものは検索すれば出てくる方法とほぼ同じ。
取り回しが良いように DLL にしてみた。

サンプルプロジェクトの構成

まず Visual Studio のソリューションにプロジェクトを3つ作成。

プロジェクト名 種類 参照設定 備考
Server Windows フォームアプリケーション HogeHoge
Client Windows フォームアプリケーション HogeHoge,Server スタートアッププロジェクト
HogeHoge クラスライブラリ System.Windows.Forms

送受信まわりを簡単な DLL(HogeHoge) にして Server・Client から参照する。

Client で Server を参照設定しているのは、実行フォルダに Server.exe を作成する為だけの目的なので本来は必要ない。HogeHoge の System.Windows.Forms 参照はウインドウメッセージを扱うので必要。

Server にはテキストボックスを1つ、Client にはボタンを2つ追加すれば準備完了。
続きを読む



スポンサーリンク