.NET

MAG画像ローダ

唐突にPC98時代によく使われていたMAG画像形式ファイルを読み込むプログラムをC#に移植してみました。2,3個の画像でしか試してないのでバグがあるかも。 // 謝辞 // MITH(T.Saito)氏のWAB−S用マルチグラフィックローダ WMLのソースを参考にさせていた…

MEFでオープンジェネリック型をエクスポート

MefContribにはジェネリック用のGenericCatalogクラスがあります。これを使うとオープンジェネリック型をエクスポートすることができます。ただ、ドキュメント不足な上に、ちょっと癖がありそうです。公開するインタフェースは、こんな感じです。 // このイ…

LinFu.DynamicProxyの使い方が分からない

MefContribにCastle以外にもLinFu.DynamicProxyが含まれていたので弄ってみたのですが、どうにも使い方が分かりません。 using LinFu.DynamicProxy; public class MyInterceptor : IInterceptor { public object Intercept(InvocationInfo info) { return in…

MEFでAOP

過去に似たようなことをやった気がしますが、今回はMefContribを使った一応、正式っぽい方法で。 using System; using System.Linq; using System.Reflection; using System.ComponentModel.Composition; using System.ComponentModel.Composition.Primitive…

JetBrains.Annotations

ReSharperはコード分析してnull参照が発生する可能性があるところを指摘する機能があります。 このように該当箇所に波線が出て便利です。しかし、メソッドの戻り値がnullの場合は、残念ながらチェックされません。 ただ、この機能はカスタム属性が使われてい…

WebActivatorとPreApplicationStartMethodAttribute

MefContrib.MVC3によって生成された、AppStart_MefContribMVC3.csには、MEFを使用するための初期化コードがありますが、このコードは誰が呼び出しているのでしょうか? [assembly: WebActivator.PreApplicationStartMethod(typeof(TestMvcApplication.App_St…

ASP.NET MVC 3でMEFを使う

MefContrib.MVC3を使うと簡単にASP.NET MVCからMEFを使えるのでご紹介。前提:NuGetがインストール済みなこと。まず、ASP.NET MVC3のプロジェクトの用意しましょう。ASP.NET MVC3を選択。 面倒なのでデフォルト実装ありで。 では、MEFを使えるようにしましょ…

MarshalByRefObjectから継承する

小ネタ。通常、MarshalByRefObjectから継承することはあまり無いとは思いますが、RealProxyを使ったAOPモドキなんかで、ひょっとしたら使うことがあるかも知れません。その場合のデメリットを見てみましょう。 using System; using System.Diagnostics; name…

カスタム属性が見えるモノ

最近知ったショックなこと。 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Sample { [AttributeUsage(AttributeTargets.Class)] class MyAttribute : Attribute { public string Name { private set; …

RubyのCycle

ネットを見ていて、true, false, true...と繰り返すコードについての話題があり、そこでRubyにcycleなるものがあることを知りました。Rubyに対するアンテナが低くて・・・(^^;C#のEnumerableクラスには同様のものはありませんが、自分で書くとこんな感じでし…

Managed Extensibility FrameworkからIronRubyを簡単に使う

MEF記事の連続投下第三弾。あまり一般受けしないネタを連投です。(^^;IronRubyをアプリケーションにホスティングは難しくありませんが、dynamicを使うなど特別扱いが必要だったりするし、何よりもVS上でコードを書いてビルドという流れの中に「rubyでコード…

Managed Extensibility FrameworkでAOPその2

MEFを人に説明するとき、どう言えばよいのでしょうか? 私の場合、DIコンテナを知っている人には「DIコンテナっぽい何か」と茶を濁しています。さて、DIコンテナはxmlで設定ファイルを書くものが多かった印象がありますが、MEFはカスタム属性ベースになって…

Managed Extensibility FrameworkでAOP

個人的に.NET4で一番期待していたMEFですが、何か足りないなぁっと思っていたらAOPがサポートされていなかったんですね。twitterでつぶやいていた案でちょっと組んでみました。ExportProviderでごにょごにょ。ただ、まだ勉強のためのコードなのでこのまま仕…

IronPythonを使った多重継承

C#の場合、多重継承はインタフェースを使うことになりますが、実装クラスへの委譲を書くのがちょっと面倒です。一方、Pythonは実装の多重継承ができるのでこれを利用して委譲の手書きを手抜きできないか試してみました。まずは、多重継承させるインタフェー…

IronRuby RCでのホスティング

IronRubyはα時代から弄っていましたが、バージョンが上がるたびにホスティング方法が変更されていました。RCになったのでそろそろ最終版だと思いたいのですが、どーなんでしょ。(^^;てきとーなrubyのクラス。 class Foo def bar puts 'baz' end def add(x, y…

Windows Azure

Windows Azureを弄ったことがなかったので、ちょっと試してみました。Silverlightで作ったサンプル。どっかてみたような?・・・ちょっとパクリました。(^^; Google Gadgetsとして貼り付けています。コードはXAMLのみ。こちらもスーパーpre記法を初めて使っ…

はじめてのBing API

私の調べもの(MS系技術情報)の場合、googleよりもbingの方が良い結果を返すことも多く、最近はもっぱらいbingを使っていたりします。Bing API 2.0のリファレンスを見たら何やら面白いことができそうなので、ちょっと弄ってみました。とは言っても英語->日本…

DynamicObjectのTryUnaryOperation

インクリメント、デクリメント演算子でも呼び出されて素敵なのですが、 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Dynamic; namespace DynamicSample { class MyDyna…

Tuple

いままで何故か用意されていなかったタプル。お陰で独自のPairやら、Tupleが沢山作られたと思います。 using System; namespace TupleSample { class Program { static void Main(string[] args) { // タプルの要素は7つ var t1 = Tuple.Create(1, 2, 3, 4, …

DataTableのソート

ADO.NETを使っていてDataTableがお手軽なメモリデータベースとして使えることに気づいて好んで使っているのですが、DB用途以外に使っていると、時々、嫌ぁ〜な問題にぶつかる事があります。一例として、ソートの問題があります。

.NET4.0の新規クラス

Windows7環境を構築したので、そこにVisual Studio2010Beta2を入れてみました。時間的には全然余裕がないのですが、精神的にはちょっとゆとりが出てきたので、.NET4.0についてちまちま弄っていこうかと思っています。今日は、Lazyクラスを見てみることに。 u…

VSTOとOffice2003

開発環境で動いていたVSTOを使ったアプリがテスト環境で動かない、という相談を受け調べてみたところ、 Download Microsoft Visual Studio Tools for the Microsoft Office system (Version 3.0 Runtime) (x86) from Official Microsoft Download Center ↑こ…

Java(Ja.NET)の中の.NET

Java側から.NETライブラリを使えますが、色々面倒なことが発生します。試しにSystem.Generic.Listを使ってみると、 // import System.*とかやらかすと、JavaのStringと.NETのStringが衝突してしまうので注意 import System.Console; import System.Int32; im…

はじめてのJa.NET

・http://www.janetdev.org/ .NET向けの(まともな?)Javaである、Ja.NETを弄ってみることに。 class Hello { public static void main(String[] args) { System.out.println("Hello, World!"); System.Console.WriteLine("Hello, Ja.NET"); } } 上記のように.…

PDC2008

10/27-30に開催されたPDC2008ですが、開催中にも関わらずセッション動画が随時公開されていて参加出来ない人としては嬉しい限りです。連休中はひたすらセッションを見ていたので、個人的に興味があったセッションを簡単にまとめてみます。■The Future of C# …

Virtual PC 2007SP1が重い

Visual Studio 2010CTPを落としたので早速Virtual PCで動かしてみたところ、使い物にならないくらい遅いです。マシンスペック的には良い部類なんですけどね。仕方がないのでVMWare Playerで動かしてみたところ、こっちの方が軽快でした。(^^; あと、日本語キ…

DataTable.Cloneの攻撃

DataTableにユニークキーを設定する - 匣の向こう側 - あまりに.NETな ユニークキー問題は解決したと思っていたのですが、思わぬ落とし穴が。 using System; using System.Data; class Program { static void Main (string args) { DataTable t = new DataTa…

ExcelからWCFを呼び出す

仕事で嵌ったのでメモ。 Excel -> CCW -> WCF -> ASP.NET Service こんな呼び出し方をする必要があったのですが、WCFの初期化をapp.configにやらせていました。Excelには当然、app.configがないのでWCFの呼び出しで失敗していまいます。Excel.exe.configを用…

WPFの国際化対応

WinFormでは簡単に対応できるのでWPFも楽勝だと思っていたのですが、Visual Studioはあんま面倒を見てくれないです。やり方は色々ありますが、個人的には、 http://www.codeproject.com/KB/WPF/WPFLocalize.aspx この方法が良さそうに思いました。上記の記事…

DataTableにユニークキーを設定する

// なんらかのデータ検索 // 対象テーブルのキーはユニークキー(つまりキーにNull値を含む)だったとする DataTable t = Find (10); // DataTable.Mergeを使いたいのでPrimaryKeyを設定するが・・・ // このタイミングでプライマリキーに指定したカラムのAllo…