かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

MEF

WinRTのMEFでServiceLocator実装してみた

お約束:Windows 8 CP時点の内容です。正式版では変わってるかもしれません。WinRTのMEFってCompositionContainerクラスがいなくなってCompositionServiceクラスでSatisfyImportsOnceメソッド使って対象クラスに何かをImportするということしかできないっぽ…

Managed Extensibility Framework入門 まとめ

MEFの入門記事のまとめです。全11回でMEFの基本的な使い方を説明しています。 Managed Extensibility Framework入門 その1「はじめに」 Managed Extensibility Framework入門 その2「使うに当たって覚えておきたいこと」 Managed Extensibility Framewor…

Managed Extensibility Framework入門 その11「拡張可能アプリケーション」

これまで、10回にわたってMEFについて書いてきました。まだ細かい所は書いてない部分もありますが、これで一区切りにしたいと思います。後は、MEFのドキュメントを見てなんとかなると思います。 ということで、今回は、ちょっと頑張って拡張可能なアプリケー…

Managed Extensibility Framework入門 その10「初期化処理」

Managed Extensibility Framework入門もついに10回になりました。結構長いものです。今回は、MEFのコンテナ内で作成されたインスタンスの初期化処理について書きます。 通常のインスタンスの初期化 オブジェクト指向言語とうたってる言語では、全ての言語が…

Managed Extensibility Framework入門 その9「メタデータ」

かなり間が空いてしまいましたがMEFです!MEFとはなんぞやというところから色々やって、ついに遅延初期化まで完了しました。次は、メタデータというものをやってみようと思います。 メタデータって? メタデータとはなんでしょう?という疑問なのですが、Wik…

Managed Extensibility Framework入門 その8「遅延初期化」

さて、前回は、リハビリも兼ねてLazyクラスの簡単な使い方を説明しました。今回はMEFでのLazyの使い方を説明します。 そもそも拡張可能アプリケーションでの遅延初期化とは? そもそも、なんで遅延初期化が必要なのかというと前回でも言ったかもしれませんが…

Managed Extensibility Framework入門 その7.5「遅延初期化のLazy」

ずいぶん長いこと、MEFの記事をほったらかしていました。正直自分でも記事書いてたことを忘れてました。ということでリハビリも兼て、次の回のための予備知識であるLazyクラスについて説明してみようと思います。 遅延初期化 遅延初期化とは読んで字のごとく…

Managed Extensibility Framework入門 その7「クラス以外のExportとImport」

さて、前回までで一番基本的なクラスのExportとImportについて説明しました。そして、それとDirectoryCatalogを組み合わせて、拡張可能なアプリケーションを実際に作ってみるところまでやりました。(拡張可能アプリケーションといってもしょぼいですが・・…

Managed Extensibility Framework入門 その4「もっとExport」

さて、前回ではExportについてちょっと深く見てきました。前回の最後で次はImportかなと言っておいて申し訳ないのですが、もうちょっとExportにお付き合い頂きたいと思います。 Export時の型を指定 今までExportを付けた型は、AクラスにExportをつけたらAク…

Managed Extensibility Framework入門 その4「もっとExport」

さて、前回ではExportについてちょっと深く見てきました。前回の最後で次はImportかなと言っておいて申し訳ないのですが、もうちょっとExportにお付き合い頂きたいと思います。 Export時の型を指定 今までExportを付けた型は、AクラスにExportをつけたらAク…

Managed Extensibility Framework入門 その5「Import」

さて、Exportもひと段落したので、今度はExportされたクラスを取り込むImportを見ていこうと思います。これさえマスターすれば、基本はおさえたも当然です!!!ということで気合を入れていきましょう。 名前指定でImport Importは、もともとExportされたも…

Managed Extensibility Framework入門 その6「拡張可能なアプリケーション作成」

ここまで基本をみっちりやってきました。まだまだMEFの底は遥かかなたにありますが、ここでやった知識だけでも一応拡張可能なアプリケーションというやつは作れます。なのでさっくり作ってみようと思います。 作りたいもの 起動すると、何かしら画面に表示さ…

Managed Extensibility Framework入門 その3「Export」

さて、前回はMEFを使ってHello world的なプログラムを作成しました。基本的には、クラスにExport属性をつけてカタログに公開するという設定をして、Import属性をつけてカタログ内のクラスを設定してもらうという流れでした。ということで、ExportとImportの…

Managed Extensibility Framework入門 その1「はじめに」

参考情報 入門の最初にいきなり参考情報というのもなんですが、以下のサイトで独学出来る人はこれから書くであろう一連のエントリは見なくてもいいと思います。もし、見て頂けるなら、この解釈間違ってるとか、この記述がおかしいとコメントなどで指摘して頂…

Managed Extensibility Framework入門 その2「使うに当たって覚えておきたいこと」

さて、前回はMEFというよりはDIコンテナとはなんぞや?ということについて語ってしまうような内容になってしまいました。今回はMEFを使う上で知っておきたいクラスと、その役割について説明します。因みに、ここで使用するのは基本的にMEFを使うのに必要なも…

WCF RIA ServicesのDomainServiceにMEFを使ってDIする方法

先日、DomainServiceの生成処理をのっとる方法を紹介しました。 WCF RIA ServicesでDomainServiceの生成処理をのっとる方法 これを応用してDomainServiceにMEFを使ってDIしてしまおうと思います。ということで早速MEFRIAServicesというSilverlightアプリケー…

Prism 4.0 Drop9が超素敵な感じになってる

Composite Application Guidanceとして知られる通称Prismですが、暫く見ない間にPrism 4.0 Drop9というところまでいってました。 こいつの凄いところは、今までDIコンテナとしてはUnityを使ってましたが、MEFが使えるようになっているところが非常に素敵です…

Expression BlendのMVVMサポート機能とMEFの連携

Expression blendを見てると、MVVMをサポートした形のUserControlのテンプレートがあります。こいつは以下のようなコードを作成してくれます。

NavigationFrameworkとMEFの連携

Silverlight 4 + MEF + NavigationFrameworkのお話。 MEFを使うと、動的に読み込んだXAPからクラスのインスタンスを取得したり出来るけど、これがNavigationFrameworkと、すこぶる相性が悪いです。どう悪いかって、例外が出て動かないくらい悪いです。という…

Silverlight4でMEFベースのアプリを作るための小さな起動用クラス

Silverlight 4でMEFベースのアプリケーションを作りたいと思ったら、以下のようなクラスを準備するとよさそうです。 using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.…

XAMLからMEFのコンテナにアクセスするマークアップ拡張

何となく作ってみた。 まず、コンテナを保持しておくためのstaticなクラスを用意する。 using System.ComponentModel.Composition.Hosting; namespace WpfMVVMBase.Markup { public static class ContainerProvider { public static CompositionContainer Co…

MEF(Managed Extensibility Framework) & WPFでHello world

注意:MEFは、正式リリース前のbeta版を使ってるので、正式版とは違うかもしれません。 次期.NET Framework4に入るDIコンテナのMEFとWPFを組み合わせて、簡単なHello worldを作ってみようと思います。 下準備 まず、最初にWPFアプリケーションを作成します。…