鷲ノ巣

C# とか PowerShell とか。当ブログの記事は(特に公開直後は)頻繁に改定される場合があることをご了承ください。

TypeScript のモジュールの使い方

この記事は ASP.NET Advent Calendar 2015 の 11 日目の記事です。

最近 JavaScript 系の技術に興味を持って、Angular を中心に調べています。
やっぱり MS クラスターとしては、生の JavaScript よりも TypeScript を書きたいじゃないですか。
今回は JavaScriptNode.js)と TypeScript のモジュール機構についてまとめてみました。

続きを読む

LINQ で動的に OR 検索するやつ

Entity Framework なんかを使っていて、データを検索したいとき。
検索フォームからユーザーに検索条件を入力してもらって、それで OR 検索をしたいとなると、ちょっと面倒です。
もちろん、何も入力しなかった項目ではフィルタリングを行いません。

AND 検索だけなら、Where メソッドをチェーンさせて行けばいいのですが、OR 検索が絡むと、そう簡単にはいきません。
こういう場合は Expression Tree を頑張って組み立てなければいけないわけですが、やり方はこのへんを見て頂いてですね…

LINQ文で動的にWhere句を組み立てるには?[3.5、C#、VB] - @IT
Expressionを使った動的なOR文の生成 - Architect Life

いや、いやいやいや。わけがわからないし面倒くさい。そんなのやってらんない。

続きを読む

async/await と SynchronizationContext (2)

前回SynchronizationContext の説明だけで async/await に絡んだ話が出来ませんでした。
今回はその続きになります。

まずは復習。
以前の記事で詳しくやりましたが、async/await は、以下のような特徴を持つ非同期処理の方式です。

  • コード上に明示的にコールバック関数が現れない
  • ほとんど同期処理と似た見た目を実現できる

コールバック関数が見当たらないのは、メソッドを分割して、自分自身をコールバック関数にしているからでしたね。

さて、同期処理とほとんど同じように書けるというからには、前回やった APM のように、現在のスレッドが UI スレッドなのかワーカー スレッドなのかを気にするようではいけません。
というわけで、当然ながら SynchronizationContext が一枚噛んでいて、「いい感じ」に処理されるようになっています。

続きを読む

async/await と SynchronizationContext (1)

前回の記事に続き、非同期処理シリーズの第 2 弾。
今回は SynchronizationContext について。

SynchronizationContext は、.NET Framework 2.0 から登場したクラスです。「同期コンテキスト」と訳される場合もあります。
これが何かと言うと、誤解を恐れずに大雑把に言えば、「スレッドをまたがる際の問題をいい感じに処理してくれるクラス」です。
いやまぁ、ふわっとしすぎているのは分かっているんですが、実際にどういう処理をするかは派生クラスによるので、こういう言い方しかできないんです。

続きを読む