しばやん雑記

ASP.NET Core とメイドさんが大好きなフリーランスのプログラマーのブログ

C#

AutoMapper の基本とちょっとした Tips

C#

AutoMapper最近はモデルの詰め直しをする時に AutoMapper を使うようになりました。MvcFutures には ModelCopier というコピー専門のクラスがあったりしますが、やはり自由度が低すぎるので AutoMapper が便利だと思います。インストールも NuGet から一発で…

Web API よりも HttpClient に注目したい

C#

NuGet で公開されていた System.Net.Http.dll が .NET Framework 4.5 では BCL 入りを果たしました。このアセンブリには HttpClient という全く新しい HTTP のクライアントが入っています。これって元々は ASP.NET Web API 向けに HTTP を綺麗にラップしたク…

WCF WebSockets で実現するリアルタイム Web

最近は Node.js と socket.io で WebSocket を使うことが多いようですね。Windows Azure でも動作する node.exe がリリースされたり、Microsoft もオープンソース寄りになってきたのかと思います。しかし!わざわざ .NET 開発者が Node.js を使う必要がある…

接続文字列の書き方をまとめてみる

C#

内容が古くなってきたので 接続文字列の書き方をまとめてみる(2014 年版) - しばやん雑記 にて Azure にも対応した 2014 年版を公開しました。毎回、本番環境にアップする前に迷うのが SQL Server の接続文字列だったりします。レンタルサーバでは基本的に…

Silverlight 4 と .NET Framework 4 間で共有可能なライブラリを作る方法

C#

毎回、どのアセンブリを参照しておけばいいのか忘れてしまうので強くメモしておきます。Sharing Silverlight Assemblies with .NET Apps - .NET Blog - Site Home - MSDN Blogs実際に利用可能なアセンブリは以下になります。 mscorlib System System.Core Sy…

.NET 4 の罠に引っかかった

C#

みについを .NET Framework 4 に対応させたバージョンを昨日、半自動更新でのアップデートを開始したのですが、今朝にテーマが読み込めなくて落ちるという報告を頂きました。帰宅後すぐに調査し始めたのですが 2 つの罠に引っかかったことがわかりました。 …

Repository パターンまとめ

C#

まとめになるかはわかりません。タイトルを思いつかなかっただけです。Repository for ASP.NET MVC - しばやん雑記 で Repository の使い方をちょろーんと書きましたが、IRepository で共通部分くくりだしてるのに、実装はそれぞれの Repository 任せってダ…

.NET Framework における GC と Mutex の関係

C#

Mutex を使ってアプリケーションの多重起動をブロックする場合、検索して見つかるのは以下のような実装。 Mutex mutex = new Mutex(false, "hoge"); if (!mutex.WaitOne(false, 0)) { // 既に起動されている return; } Application.Run(new Form1()); Mutex …

オブジェクト初期化子を使う

ものすごく楽です、特にプロパティが多い WPF 周りですっきりと書けるのがうれしいところ。これは惚れます。 Window window = new Window { Title = "新しいウィンドウ", Width = 300, Height = 300 }; と書けるのですっきりしていい感じです、イベントも指…

COM の CoClass について調べた

C#

COM の CoClass を .NET から使う場合は、空のクラス定義に ComImportAttribute と GuidAttribute を付け、同じように定義しておいたインターフェースにキャストするのが一般的です。しかし以下のようにインターフェースを new しているように書かれているコ…

.NET Framework に用意された 3 種類の Timer

C#

.NET Framework には 3 種類のタイマークラスが用意されています。 System.Timers.Timer System.Threading.Timer System.Windows.Forms.Timer それぞれ実装方法の違いで挙動が変わっているので、簡単に調べたものをメモしておきます。 System.Timers.Timer …

.NET Compact Framework で Win32 メッセージを処理する

C#

.NET Compact Framework に用意されている Form クラスには WndProc メソッドが存在しないので、ウィンドウプロシージャの処理をオーバーライドできません。Win32 メッセージを処理するためには Microsoft.WindowsCE.Form.EventWindow を使えば、WndProc を…

Runtime Callable Wrapper (RCW) を使う時の注意点

C#

Runtime Callable Wrapper (RCW) のおかげで、COM を簡単に C# などから使うことが出来ますが、今回素晴らしくその挙動ではまったので忘れないうちにメモ。 Marshal.ReleaseComObject の呼び出し Marshal.ReleaseComObject を呼び出す必要がないのは、キャス…

System.Drawing.Color で定義されている色の一覧を取得する

C#

GDI+ の Color クラスで予め定義されている色がどんな色なのかわからなかったので、リフレクションを使って取得するコードを書いてみました。特に難しいことはしていません。 var baseColor = new Color(); foreach (var propertyInfo in typeof(Color).GetP…