プログラミング C# - 翔ソフトウェア (Sho's)

C#/.NET/ソフトウェア開発など

.NET

メタプログラミング入門 - はじめに

数回に渡って、C#/.NET によるメタプログラミングを紹介して行きたい。 先ずは概要から。 ■ メタプログラミング ・メタとは メタ (meta) は、「高次な-」「超-」等の意味の接頭語で、ギリシャ語から来ている。 プログラミングでは、メタプログラミングの他…

.NET アプリケーション (WPF/Windows フォーム) で多重起動を禁止し、単一のプロセスで動作させる

■ 概要 .NET アプリケーション (WPF/Windows フォーム) で多重起動を禁止し、単一のプロセスで動作するようにする方法を C# で示す。 ■ 解説 WPF アプリケーションや Windows フォーム アプリケーションにおいて、多重起動を禁止してみよう。 ここでは、既に…

文字が数字かどうかを判定する (char.IsNumber メソッドでローマ数字や漢数字は数字と看做される?)

文字が数字かどうかを判定する場合、System.Char.IsNumber メソッドを使うことができる。 では、ローマ数字などは数字と判定されるのだろうか? char.IsNumber の場合 今回調べた結果、次のようなテストが通ることが分かった。 using Microsoft.VisualStudio.…

Windows 及び Internet Explorer のバージョンを調べる

■ 概要 C# で Windows 及び Internet Explorer のバージョンを調べる方法を示す。 ■ 解説 ・C# での Windows のバージョンの取得方法 Windows のバージョンは、System.Environment.OSVersion.Version で取得できる。 例えば、Windows 8 のバージョンは "6.2.…

Roslyn による Visual Studio のアドイン

※ この内容は、『こみゅぷらす Tech Aid 2013』 (2013-07-27 新宿,東京) にて実際のデモと共に発表予定。 ■ Roslyn について Roslyn は、C# や Visual Basic のコンパイラーの内部の API 等を公開したものだ。"Compiler as a Service" と表現されている。 現…

INotifyPropertyChanged の実装に便利なクラスとコードスニペット

WPF や Silverlight、Windows 8 や Windows RT の Windows ストア アプリでは、UI の記述に XAML を使うことが多い。 そして、データバインドするために INotifyPropertyChanged をしょっちゅう実装することになる。 これが結構面倒なので、開発者は普通、少…

Hokuriku.NET Vol.12

『Hokuriku.NET Vol.12』~今年の夏も福井で~ 日時 2013年8月3日(土)10時30分~18時 会場 福井市地域交流プラザ 研修室603 (AOSSA 6階) (福井県福井市手寄1-4-1) 参加費 500円 (会場費) 内容/申込み http://atnd.org/events/40509

こみゅぷらす Tech Aid 2013

『こみゅぷらす Tech Aid 2013』こみゅぷらすの飲み放題イベント2013!! 日時 2013年7月27日(土)11時~18時 会場 新宿居酒屋 参加費 3100円 (ランチ、飲み放題付き) 内容/申込み http://comuplus.net/CLT2013/

Microsoft MVP for Visual C# を再受賞しました

Microsoft MVP (Most Valuable Professional) for Visual C# を再受賞しました。2005年7月からの受賞で、9年目になります。 ここでも述べましたが、オンライン・オフラインで多くの素晴らしいエンジニアの皆様と出会えたおかげです。感謝です。 今後ともどう…

リフレクション Q&A

「Hokuriku.NET C# メタプログラミング ~リフレクション~」に参加してきた。 Hokuriku.NET C# メタプログラミング ~リフレクション~ 日時 2013年6月29日 会場 海みらい図書館 (石川県金沢市) 関連記事 参照設定せずにFormを表示する - xin9le.net Hokuri…

Expression でラムダ式を作成してデリゲートとして実行する

以前「Expression の構造を調べてみる」と云う記事で、Expression の内部のツリー構造を調べた。 その中で、ラムダ式として足し算を行うだけの (x, y) => x + y と云うシンプルなラムダ式を Expression で受け、その構造を調べた。 using System; using Syst…

動的にイベント ハンドラーを追加

今回は、動的にイベント ハンドラーの追加を行ってみたい。 ■ 動的に読み込まれるクラス ライブラリー側 例えば、次のようなクラス ライブラリー (ClassLibrary.dll) があるとする。 // クラス ライブラリー側: ClassLibrary.dll namespace ClassLibrary { p…

列挙型 (enum) の列挙子の動的な取得など

今回は、列挙型 (enum) の列挙子の取得などについて。 ■ 列挙型 (enum) の列挙子を動的なメソッド呼び出しの引数で渡したい 例えば、次のようなクラス ライブラリー (ClassLibrary.dll) があるとする。 // クラス ライブラリー側: ClassLibrary.dll namespac…

匿名型でのプロパティ名の省略

今回は、ごく軽く余り役に立たない話題。C# の匿名型に関して。 ■ 匿名型 匿名型は、以下のようなものだ。 var 本1 = new { タイトル = "C#入門", 価格 = 3800 }; これで、"本1" は次のような無名のクラスの参照変数となる、と云うものだ。 // 疑似コード (…

『Community Open Day 2013 北陸会場』が開催されました。

先週土曜日 (5月11日) に、全国 7 箇所 (札幌、仙台、名古屋、石川、大阪、広島、沖縄) で一斉に Community Open Day 2013 が開催されました。 私は、北陸のエリア リーダーとして参加しました。 聴きに来てくださった皆様、スピーカーの皆様、スタッフの皆…

Community Open Day 2013 (2013年5月11日土)

今年も全国 7 箇所 (札幌、仙台、名古屋、石川、大阪、広島、沖縄) で一斉に Community Open Day が開催されます。 東京会場はこちらに詳しいスケジュールがあります。 Community Open Day 2013 Supported by Microsoft 日時 2013/05/11(土) 10:00 – 16:50 …

カリー化を C# で説明してみる

今回は、軽めの話題として、関数型プログラミングでお馴染みのカリー化を C# でやってみよう。 ■ 関数の作成 先ず、以下のように関数を用意してみる。 // 2つの数の足し算 (引数は2つ) Func<double, double, double> 足し算 = (x, y) => x + y; // 2つの数の平均 (引数は2つ) Func<double, double, double> 平</double,></double,>…

MVVM パターンを理解するための参考記事

WPF (や Silverlight、XAML による Windows ストア アプリ、Windows Phone アプリ) での View 周りの設計方法には、大きく分けて次の二種類がある。 コードビハインド XxxWindow.xaml - XAML で View を宣言的に書く 。 XxxWindow.xaml.cs - コードビハイン…

「Community Open Day 2012 北陸」 (6月9日) での「JavaScript+HTML5 と C#+XAML で作る Windows8 アプリ」資料公開

大分前のものだが、「Community Open Day 2012 北陸」 (6月9日, 石川工業高等専門学校) での「JavaScript+HTML5 と C#+XAML で作る Windows8 アプリ」も公開。 JavaScript+HTML5とC#+XAMLで作るWindows8アプリ from Fujio Kojima ■ 関連リンク 「Community O…

VSUG DAY 2012 Winter 「Windows 8 ストア アプリ 開発 Tips」の資料公開

2012/12/15(土) VSUG DAY 2012 Winter の時の資料を公開します。 Windows 8 ストア アプリ 開発 Tips from Fujio Kojima ■ 関連リンク 2012/12/15(土) VSUG DAY 2012 Winter 2012/12/15(土) VSUG DAY 2012 Winter #vsug - Togetter

C# による Observer パターンの実装 その6 - DynamicObject を使ってオブザーバーを作る

※ C# Advent Calender 2012 の 25日目のエントリー。 本ブログでは、これ迄五回に渡り、C# による Observer パターンの実装をご紹介してきた。 C# による Observer パターンの実装 記事 その1~5 [C#][Design Pattern] C# による Observer パターンの実装 そ…

プラグイン処理 2 (DLL/C#/Python に対応させてみる)

前回の「プラグイン処理」の続き。 今回は、前回のコードに少し付け足して、様々な種類のプラグインに対応してみよう。 前回は、DLL だけをプラグインとして使えるようにしたが、今回は、それに加えて、C# と Python のプラグインも使えるようにしてみたい。…

C# による Observer パターンの実装 その5 - Caller Info を使ってプロパティの指定をよりシンプルに

前回「C# による Observer パターンの実装 その4 - Expression を使ってプロパティの指定をタイプセーフに」と云う記事で、Observer パターンの C# による実装の第四回として、Expression を用いることで、前々回文字列でプロパティを指定していた部分をタイ…

ポータブル クラス ライブラリに関する検証

※ Windows 8 Store apps Advent Calendar の 20日目のエントリー。 以前、「Windows Store アプリと Windows Phone アプリ、Silverlight アプリ、WPF アプリでソースコードを共通化する方法に関する記事」と云う記事でポータブル クラス ライブラリに関して…

Windows 8 ストア アプリ開発資料リンク集

Windows 8 の ストア アプリ開発を始めるにあたり、参考にさせていただいたサイトをご紹介する。 開発を始めるとき デベロッパー センター - Windows ストア アプリ Windows ストア アプリ開発は先ずここから。 先ず必要な、開発ツールや SDK の入手方法、開…

C# による Observer パターンの実装 その4 - Expression を使ってプロパティの指定をタイプセーフに

前回「C# による Observer パターンの実装 その3 - 複数のプロパティの更新イベントをフレームワーク側で振り分け」と云う記事で、Observer パターンの C# による実装の第三回として、フレームワーク部で、プロパティ毎の更新処理が呼ばれるようにした。 結…

C# による Observer パターンの実装 その3 - 複数のプロパティの更新イベントをフレームワーク側で振り分け

前回「C# による Observer パターンの実装 その2 - event による実装」と云う記事で、Observer パターンの C# による実装の第二回として、C# の event を用いた実装を行ってみた。 event を用いることで、より C# らしい実装となった。 「C# での Observer …

C# による Observer パターンの実装 その2 - event による実装

前回「C# による Observer パターンの実装 その1 - 古典的な実装」と云う記事で、Observer パターンの C# による実装の第一回として、古典的な実装を行ってみた。 interface と抽象クラスを用いた実装だった訳だが、こうした場合、C# では event を用いるの…

C# による Observer パターンの実装 その1 - 古典的な実装

「Expression を使ってラムダ式のメンバー名を取得する」と云う記事で、ラムダ式の中のメンバーの名前を取得した。 これから数回に渡って、Observer パターンの C# による実装を何種類か例に挙げ、その中で上記を活用していきたい。 今回は、その第一回とし…

プラグイン処理

動的処理の一例として、今回はプラグイン処理を行ってみる。 プラグイン処理によって、アプリケーションに対して動的に機能を追加できるようにすることができる。 ■ プラグイン処理の例 今回のプラグインは、以下のような規約ベースで動くものとする。 実行…