XORveR.com の日記

XORveR.com の公式ブログです。

DotNet

システム状態を参照するICommandって有りや無しや

まえがき システムの状態によって振る舞いを変える画面要素があったとします。 ぶっちゃけるなら、クリップボードにイメージが入っている場合にのみ有効になるメニューアイテムなんですが。 こいつを実装するのにちょっと悩んでいたりします。 理由 なぜかと…

多重起動しないアプリを作ってみた。

まえがき Common.Util.IPC の使用法のサンプルです。 メリット 単一のインスタンスで実行するアプリケーションを容易に開発できます。 サンプルプロジェクト Unique プロジェクト 動作について これを実行すると、多重起動を検知して後続での実行時引数を先…

VisualStudioでjsonの文字列リソースを作ってみた。その2

まえがき 前回 は、json文字列リソースの作成までを書きました。 その使い方について説明します。 メリット 未対応な言語での使用において、json ファイルを手作業で編集することで容易に翻訳作業を行えます。 サンプルプロジェクト Texts プロジェクト 動作…

コードサンプル

まえがき コードサンプルとして Microsoft の Visual Studio Team Services に Common ライブラリを置いてみました。Commonソリューション ライセンス MIT ライセンスです。 コピーライト要件は消してしまうかもしれません。(他からパクったコードも多いで…

VisualStudioでjsonの文字列リソースを作ってみた。その1

まえがき dotnetでの文字リソースは扱いが厄介なので、利用者が勝手に編集できるようにjsonファイルで提供を考えた。 問題点 しかし、リソースのキーは public const string Product_Name = "Product_Name"; といった風にしておきたい。 理由は言うまでもな…

Linqのクエリ式を使ったプロパティ名の記述の提案

まえがき blog.xorver.comでも紹介している、クエリ式を使ったプロパティ名の記述は便利ですが、毎回拡張メソッドが呼ばれます。 わずかな問題だけど、気になります。そこで、こうしたらどうだろう?という提案です。 ヘルパー まず、以下のヘルパーを用意し…

using しているブロック内から yield return した先で処理キャンセルした時に using しているリソースはどうなる?

まえがき 長い処理を行うメソッドがあり、そのメソッドでは、 using で IDisposable なリソースを管理しています。 Task.Run で実行されています。 それを、あと付けでキャンセル可能にしたくなったとします。 方法案1 定石から CancellationToken.IsCancel…

標準ではない文字列リソース管理でときどきしくじる。後悔したので対策を取った。

まえがき いらいらして標準でない文字列リソース管理をやった。全く後悔していない。 での String.cs を T4 で json 化する方式は問題なく動いています。 しかし、コーディングしている当人は問題なく動いていません。ええ、public const string PropertyNam…

いらいらして標準でない文字列リソース管理をやった。全く後悔していない。

まえがき 現在開発中のアプリは、標準の国際化手順はガン無視して、文字列リソースは json で提供します。 しかし、文字列リソースを識別する識別子、ぶっちゃけ Properties\Resources.Designer.cs の代わりになる機構が無ければ管理がそりゃもう面倒です。 …

もやもやしていたので、イベントのRaiseヘルパーをカバレッジ100%に・・・(以下略)

まえがき イベントハンドラを Raise しようとした時、普通のスレッドからUIスレッドのリスナーを直接に呼び出すとコケます。 そこで使われる手法ですが var dispatcher = Application.Current.Dispatcher; if (dispatcher.CheckAccess()) { // 現在のスレッ…

Linqのクエリ式を使ったプロパティ名の記述の、ひどい使い方について

まえがき プロパティ名の記述をクエリ式でタイプセーフに行う手法*1*2はもう有名*3です。しかしコーディングしていて、はたと困りました。 困ったこと スタティックなプロパティ(なんて使うなよ!)をどうやってタイプセーフに書けばいいのん? 現状認識 ま…

心療医の処方薬でふらふらしてやった。風呂はいって寝る。

2016/09/19 訂正 registered.Remove(key); を入れ忘れていました。 他の記事との関連 「弱いイベントパターンに挫折したのでむしゃくしゃしてやった。とりあえず後悔していない。」 の機能追加です。 記事の要旨 ListenerManager への対応を進めていて問題が…

弱いイベントパターンに挫折したのでむしゃくしゃしてやった。とりあえず後悔していない。

他の記事との関連 「心療医の処方薬でふらふらしてやった。風呂はいって寝る。」に機能追加バージョンがあります。 機能追加バージョンでは DisposeOne() メソッドで、イベントソースのインスタンス単位で購読を解除できます。 まえがき 弱いイベントパター…