C#

NDesk.Options(Mono) - コマンドラインパーサー

Monoでコマンドラインパーサーがあったので使ってみた。 .NET 4、コマンドラインパーサー未搭載 http://www.ndesk.org/Options 使い方はこんな感じ string data = null; bool help = false; int verbose = 0; var p = new OptionSet () { { "file=", v => da…

SLExtensionsを使ったM-V-VMパターン実装

最近、WPF界隈でModel-View-ViewModel(M-V-VM)パターンとかいうデザインパターンが人気らしいのでちょっと調べてみた。発端は↓この辺からなのか知らないけど、拙い英語力ということもあり、よく理解できなかった。というか、そもそもWPFに興味無いし。 THE…

Unity Application BlockがSilverlightに対応したので使ってみた

EnterpriseLibraryから独立したDIコンテナのUnity Application Block(UAB)がバージョン1.2になって、Silverlight対応版が出たので軽く使ってみた。前に1.1が出た時に使ってみた時のエントリを参照してもらうとUABがどんなものかわかると思う。 Unity Appli…

C#から見たVB.NET

仕事でVB.NETを使う必要が出てきそうなので最近のVBがどうなっているのかチェックがてらメモしておく。VBは7(.NET 1.0)までしか使っていないので、その後ジェネリックとかがどのように取り込まれたか全く知らないのでそのへんも気になる。 基本的な相違点 …

URLを物理パスにマップしてインジェクション

ネタが無いのでASP.NETとSpring.NETでよくやる事を書いてみる。例えばサーバーサイドで「App_Data」フォルダなんかに置いてある設定ファイルを読み書きする場合、そのファイルのURLを「Server.MapPath」メソッドを使って実際の物理パスに変換するなんて事を…

dynamicキーワードで匿名クラスは本領を発揮する!? - C# 4.0の新機能

ここでC# 4.0からdynamicというキーワードが追加されて動的型付けのオブジェクトが使えるようになったと書いたけど、てっきりC# 3.0のvarと同じでローカルスコープでしか使えないと思っていたらそうじゃないのね。なので、こういうことができるようになるん…

IDynamicObject - C# 4.0の新機能

さっきの続きまだよくわからんけど、IDynamicObjectというインターフェースを実装すると動的型付けのオブジェクトを作れるみたい。しかもその情報(メソッドとかプロパティとか)をどのように持つかは実装クラスに委ねられる。で、その基本実装を提供するク…

C# 4.0の新機能

PDC2008のAnders Hejlsbergのセッションをビデオで観てたら、新機能の紹介があったので書いてみる。 The Future of C# | pdc2008 | Channel 9 Dynamically Typed Objects 動的型付けオブジェクト?以前は、以下のようなオブジェクトのメソッド呼び出しを Cal…

カスタムプロバイダーを作ってみよう ラスト

前回の続きです。今回はSet−Contentコマンドレットへの対応からはじめます。 Set-Contentコマンドレットへの対応 Set-Contentコマンドレットに対応するには、IContentCmdletProviderインターフェースの以下のメソッドを実装します。 void ClearContent ICont…

カスタムプロバイダーを作ってみよう その4

前回の続きです。今回はタブ補完から実装します。 タブ補完への対応 タブ補完に対応させるには、以下のメソッドをオーバーライドします。 void GetChildNames(string path, ReturnContainers returnContainers) 実装する前にタブ補完とはどのような機能なの…

カスタムプロバイダーを作ってみよう その3

前回の続きです。今回はNew-Itemコマンドレットへの対応から始めます。 New-Itemコマンドレットへの対応 New-Itemコマンドレットに対応させるには、以下のメソッドをオーバーライドします。 void NewItem(string path, string itemTypeName, object newItemV…

カスタムプロバイダーを作ってみよう その2

前回の続きです。今回はまず、自作のプロバイダーでcd ができるようにする、つまりSet-Locationコマンドレットに対応させます。その前にこのプロバイダーをデバッグできるようにしておきましょう。 デバッグの設定 Visual Studioのプロジェクトのプロパティ…

カスタムプロバイダーを作ってみよう その1

PowerShellの重要な特徴として、ファイルシステムやレジストリ、環境変数など異なるデータソースに対して共通の操作(コマンドレット)が行えるということが挙げられます。例えば、以下のように「C」ドライブ直下に「New-Item」コマンドレットでファイルを作…

ObjectDataSourceの使い道

先日のSilverlightを囲む会#4でid:kiyokuraさんとASP.NETのObjectDataSourceの話をしていて、きよくらさんがObjectDataSourceを使わないと言っていたに対して自分がObjectDataSourceはSpring.NETと絡めると効果的ですよなんて話をしたので、そのへんの事を書…

Silverlightで再利用可能なカスタムコントロールを作る その2

テキストボックスの横幅は自動調整されるようになったけど、上下ボタンの縦高さも自動調整する必要があるのでこれもやる。 Controls/NumericUpDown.cs private ButtonBase upButton; private ButtonBase downButton; private TextBox valueTextBox; private …

Silverlightで再利用可能なカスタムコントロールを作る その1

Silverlightでカスタムのコントロールを作る場合、通常「UserControl」クラスを継承して作ることになるけど、この方法だと再利用性がかなり低い*1。なので、「UserControl」から派生するのではなく、UIコントロールの基底クラスである「Control」クラスから…

ASP.NETとSilverlightで作るドキュメント管理アプリ その3

つづき データベースとの接続 次はツリービューにディレクトリの一覧を表示するために実際にデータベースにアクセスしてデータを取ってくるようにする。これにはLINQ to SQLを使用する。「SLDoc.dbml」というファイル名で「LINQ to SQL」ファイルを追加する…

ASP.NETとSilverlightで作るドキュメント管理アプリ その2

では、プロジェクトを作っていく。 ソリューション構成 Visual Studuio 2008で以下のソリューションとプロジェクトを作成する。 「SLDoc」プロジェクトは「ASP.NET Web アプリケーション」で作成し、「SLDoc.UI.Silverlight」プロジェクトは「Silverlight ア…

ASP.NETとSilverlightで作るドキュメント管理アプリ その1

最近仕事でもちょこちょこSilverlightを使い出してきて*1、Silverlight開発の定石みたいなものがうっすらと見えてきた。例えば、 Silverlightだけでアプリケーションを作ろうと考えない(HTMLにはHTMLの得意なところ苦手なところ、Silverlightには(ry ) Sil…

Expressionを使った動的なOR文の生成

仕事でLINQ to SQLを使ってDBからデータを検索してくるアプリを開発していて、検索する値をスペースで区切った場合はOR検索するという仕様を実装する必要があった。OR検索自体は以下のように論理演算子で条件をつないでいくだけ。 var result = from d in db…

LINQ to SQLのメモ

LINQ to SQLを仕事で使う機会があったので、実際に使うまでやり方を知らなかった機能のメモ。 Group by group 要素 by キー var db = new HogeDataContext(); var query = from d in db.Person group d by d.Organization; さらにここから集計する場合 var r…

静的なSilverlightコンテンツを動的に生成する

この前eラーニング用のコンテンツを作るアプリを作ったけど(途中で面倒くさくなって未完成だけどね)、このアプリでは作ったコンテンツの情報はXMLに保存されていて、その情報を元にUIを生成していた。つまりSilverlightコンテンツ(XAP)は一つで、パラメ…

Silverlight 2でコンテキストメニューを表示する

Mike SnowsさんのブログでSilverlightでマウスの右クリックをフックする方法が紹介されていたので、やってみた。 MSDN Silverlight | Microsoft Docs 普通はSilverlightコンテンツ上で右クリックすると「Silverlightの構成」というコンテキストメニューが表…

Silverlight 2の単体テストをやってみる

普段はNUnitを使って単体テストをやっているけど、まだSilverlightには対応していないのでSilverlightアプリの単体テストはやったことがなかった。でも、そろそろやった方がいいかなぁと思い始めてSilverlight用の単体テストフレームワークを調べたところJef…

WebClientを使ったHTTPリクエストあれこれ

Beta 2 になってからHttpWebRequestを使わなくてもWebClientだけである程度*1のHTTPリクエストができるようになったので、まとめておく。 GET まずはGETから。 var wc = new WebClient(); wc.DownloadStringCompleted += (s, e) => { if(e.Error == null) { …

Silverlightで作るeラーニングアプリ

この前遊んだ「けんてーごっこ」というWebサービスを会社の上司に見せたら、「これeラーニングサービスとかに使えるんじゃね?」とか言われたので、「けんてーごっこ」をパクってeラーニングアプリを作ってみた。ここで言う「eラーニング」っていうのは企業…

ScriptObjectからJsonValueへの変換

昨日のエントリで、 個人的にはScriptObjectからJsonValueにいきなりキャストできたら最高だった。 なんてことをつぶやいていたけど、せっかくなんで作ってみた。JsonValueオブジェクトはJSON文字列からしか生成できないけど、Silverlightは生の(文字列では…

Silverilght 2でのJSONサポート

Beta 2になってJSONを直接扱うためのクラスが追加されたので、ちょっと触ってみた。JSON用のクラスは「System.Json」(そのまんまやな)というアセンブリに納められている。その中には、 JsonValue JsonObject JsonArray JsonPrimitive JsonType(列挙型) …

Silverlight 2で3D(パクリ)

id:nitoyonさんがおもしろいことをやっていたので、Silverlightでマネをしてみた。 AS3.0 で 3D プログラミングを1から勉強する (1) - てっく煮ブログ 跡地 ActionScriptで3Dエンジンを一から作ってみようという話。ActionScript自体はあまり知らないけど3D…

Silverlight 2 Beta 2におけるWebClientとHttpWebRequestの違い

Beta 2になって(前から?)この両者からコールバックされる時のスレッドに変更があったっぽい。WebClientのDownloadStringCompletedイベントからコールバックされる時はメイン(UI)スレッドから呼び出されるのに対して、HttpWebRequestのBeginGetResponse…