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

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

2013-01-01から1年間の記事一覧

メタプログラミング入門 - Roslyn による C# ソースコードの解析と変更

この記事は、「C# Advent Calendar 2013」の 12 月 12 日分。 ※ 「[C#][.NET][CodeDOM] メタプログラミング入門 - CodeDOM によるクラスの生成」の続き。 Roslyn Roslyn は、C# や Visual Basic のコンパイラーの内部の API 等を公開したものだ。"Compiler a…

メタプログラミング入門 - CodeDOM によるクラスの生成

※ 「[C#][.NET][CodeDOM] メタプログラミング入門 - CodeDOM による Hello world!」の続き。 CodeDOM によるクラスの動的生成 前回は、CodeDOM を使って Hello world! を表示するプログラムを動的に生成した。 もう少し CodeDOM を使ってみよう。 今回は、Co…

メタプログラミング入門 - CodeDOM による Hello world!

※ 「[C#][.NET] メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング (パフォーマンスのテスト)」の続き。 CodeDOM による動的コード生成 これまで、Reflection.Emit、式木、Roslyn による動的コード生成を試してきた。これら…

November 2013 MVP Global Summit

※ 「November 2013 MVP Global Summit - 出発前」の続き。 Microsoft MVP Global Summit に参加してきた。9回めの参加。 C# の Microsoft MVP として、多くの技術セッションに参加することができた。 セッションを含めて英語漬けの毎日だったが、1人で他国の…

November 2013 MVP Global Summit - 出発前

Microsoft MVP Global Summit 明日から、Microsoft MVP Global Summit に参加予定。今年は二回目。 世界中から、招待された数千人の Microsoft MVP が集まり、米国ワシントン州のマイクロソフト本社及びその周辺で、製品チームのマイクロソフトの社員と共に…

メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング (パフォーマンスのテスト)

※ 「[C#][.NET][Roslyn] メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング (Roslyn 編)」の続き。 オブジェクトの文字列変換のメタプログラミング ここまで、8通りの文字列変換メソッドを見てきた。 メソッドの動的生成を行…

メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング (Roslyn 編)

※ 「[C#][.NET][式木] メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング (式木編)」の続き。 Roslyn によるメタプログラミング Roslyn によるメタプログラミングに関しては、以前、次にあげる記事で扱った。参考にしてほし…

メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング (式木編)

※ 「[C#][.NET] メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング (Reflection.Emit 編)」の続き。 式木によるメタプログラミング Reflection.Emit の次は、式木によって文字列生成を行う例を見ていこう。 題材は同じく 「[…

プログラミング C# (開発関連) - 目次

プログラミング C# (開発関連) - 目次 <h4><a href="http://blog.shos.info/common/csharp_expression_index.html" data-mce-href="http://blog.shos.info/common/csharp_expression_index.html">■[C#][ラムダ式][LINQ][Expression][式木] 関連記事一覧</a></h4> <h4></h4>

メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング (Reflection.Emit 編)

※ 「[C#][.NET] メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング」の続き。 Reflection.Emit によるメタプログラミング それでは、Reflection.Emit を用いて文字列生成を行う例を見ていこう。 題材は 「[C#][.NET] メタプ…

メタプログラミング入門 - 目次

■ [C#][メタプログラミング][Reflection][Expression][式木][Roslyn][dynamic] 関連記事一覧

メタプログラミング入門 - 応用編 - オブジェクトの文字列変換のメタプログラミング

※ 「[C#][.NET] メタプログラミング入門 - 応用編 - オブジェクトの文字列変換を静的/動的に行う」の続き。 前回は、メタプログラミングによらない静的な方法とリフレクションによる動的な方法で、オブジェクトを文字列に変換した。 今回から、メタプログラ…

メタプログラミング入門 - 応用編 - オブジェクトの文字列変換を静的/動的に行う

※ 「[C#][.NET] メタプログラミング入門 - メソッド呼び出しのパフォーマンスの比較」の続き。 前回は、コード生成を行ってメソッド呼び出しを行う3通りの方法と静的なメソッド呼び出しや動的なメソッド呼び出しのパフォーマンスを比較した。 今回から、少し…

メタプログラミング入門 - メソッド呼び出しのパフォーマンスの比較

※ 「[C#][.NET] メタプログラミング入門 - Add メソッドのパフォーマンスの比較」の続き。 C# によるメタプログラミングでのパフォーマンスの比較 前回は、C# によるメタプログラミングで Add メソッドを動的生成した場合の実行速度を測定した。 今回も同様…

メタプログラミング入門 - Add メソッドのパフォーマンスの比較

※ 「[C#][.NET] メタプログラミング入門 - Roslyn による Add メソッドの動的生成」の続き。 C# によるメタプログラミングでのパフォーマンスの比較 前回まで、C# によるメタプログラミングで Add メソッドを動的生成するプログラムを作成してきた。 [C#][.N…

メタプログラミング入門 - Roslyn による Add メソッドの動的生成

※ 「[C#][.NET] メタプログラミング入門 - 式木による Add メソッドの動的生成」の続き。 Roslyn によるメタプログラミング 前回は、式木を用いて Add メソッドを動的生成するプログラムを作成した。 今回は、Roslyn によるメソッドの動的生成だ。 Roslyn は…

メタプログラミング入門 - 式木による Add メソッドの動的生成

※ 「[C#][.NET] メタプログラミング入門 - Reflection.Emit による Add メソッドの動的生成」の続き。 式木によるメタプログラミング 前回は、Reflection.Emit を用いて Add メソッドを動的生成するプログラムを作成した。 今回は、式木によるメソッドの動的…

メタプログラミング入門 - Reflection.Emit による Add メソッドの動的生成

※ 「[C#][.NET] メタプログラミング入門 - はじめに」の続き。 Reflection.Emit によるメタプログラミング 前回は、C#/.NET でメタプログラミングを行う方法について述べた。 これから数回に渡って、それぞれの方法について紹介していきたい。 今回は、Refle…

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

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

CP/M80 シミュレーターで懐かしの BDS-C を動かしてみた

先日、自宅の本棚を見ていたら、ちょっと古めのIT関連本が有ったので、写真を撮って SNS にアップしてみたところ、IT系の知人が結構懐かしがった。 「ちょっと古めのIT本」 Z80 や MC6809 のアセンブリ言語の話題から、BDS-C の話題になった。 私も色々思い…

.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&amp;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…