<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns="http://purl.org/rss/1.0/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:cc="http://web.resource.org/cc/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
    xml:lang="ja">

    <channel rdf:about="http://pro.art55.jp/?mode=rss">
    <title>創造的プログラミングと粘土細工</title>
    <link>http://pro.art55.jp/</link>
    <description>プログラミング関連Blog&lt;br /&gt;
私の興味の端から端までをお届けします！</description>
    <dc:language>ja</dc:language>
    <admin:generatorAgent rdf:resource="http://jugem.jp/?v=1.0"/>
    <cc:license rdf:resource="" />    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://pro.art55.jp/?eid=1303788" />
        <rdf:li rdf:resource="http://pro.art55.jp/?eid=1303787" />
        <rdf:li rdf:resource="http://pro.art55.jp/?eid=1303786" />
        <rdf:li rdf:resource="http://pro.art55.jp/?eid=1303785" />
        <rdf:li rdf:resource="http://pro.art55.jp/?eid=1303784" />
        <rdf:li rdf:resource="http://pro.art55.jp/?eid=1303783" />
        <rdf:li rdf:resource="http://pro.art55.jp/?eid=1303782" />
        <rdf:li rdf:resource="http://pro.art55.jp/?eid=1303781" />
        <rdf:li rdf:resource="http://pro.art55.jp/?eid=1303780" />
        <rdf:li rdf:resource="http://pro.art55.jp/?eid=1303779" />
        <rdf:li rdf:resource="http://pro.art55.jp/?eid=1303778" />
        <rdf:li rdf:resource="http://pro.art55.jp/?eid=1303777" />
        <rdf:li rdf:resource="http://pro.art55.jp/?eid=1303776" />
        <rdf:li rdf:resource="http://pro.art55.jp/?eid=1303775" />
        <rdf:li rdf:resource="http://pro.art55.jp/?eid=1303774" />
      </rdf:Seq>
    </items>
    </channel>

  <item rdf:about="http://pro.art55.jp/?eid=1303788">
    <link>http://pro.art55.jp/?eid=1303788</link>
    <title>【雑記】時代について行けない。</title>
    <description>JUGEMテーマ：コンピュータＴｗｉｔｔｅｒのアカウントを取得したけど良くわかんない。Ｂｌｏｇにつぶやいてみました。</description>
<content:encoded><![CDATA[
<DIV class=jugem_theme>JUGEMテーマ：<A href="http://jugem.jp/theme/c247/13/" target=_blank>コンピュータ</A><BR><BR></DIV>Ｔｗｉｔｔｅｒのアカウントを取得したけど良くわかんない。<BR>Ｂｌｏｇにつぶやいてみました。
]]></content:encoded>
    <dc:subject></dc:subject>
    <dc:date>2010-06-06T00:01:00+09:00</dc:date>
    <dc:creator>art55</dc:creator>
    <dc:publisher>JUGEM</dc:publisher>
    <dc:rights>art55</dc:rights>
<taxo:topics>
<rdf:Bag>
<rdf:li rdf:resource="http://jugem.jp/contents/theme.php?theme=13" />
</rdf:Bag>
</taxo:topics>
  </item>

  <item rdf:about="http://pro.art55.jp/?eid=1303787">
    <link>http://pro.art55.jp/?eid=1303787</link>
    <title>【C#】なんて呼ぶんだろう。</title>
    <description>クラスをnewしてインスタンス化する。この変数へ代入する。これをインスタンスとかオブジェクトって呼ぶはずですが、このインスタンスをごにょごにょして、特定の手続きができる状態になった状態、または状態にあるインスタンスをなんと呼ぶんだろう？そもそも名前ってあ...</description>
<content:encoded><![CDATA[
<P>クラスをnewしてインスタンス化する。この変数へ代入する。これをインスタンスとかオブジェクトって呼ぶはずですが、このインスタンスをごにょごにょして、特定の手続きができる状態になった状態、または状態にあるインスタンスをなんと呼ぶんだろう？そもそも名前ってあるのか？<BR><BR>なんて一日考えてました。</P>
]]></content:encoded>
    <dc:subject></dc:subject>
    <dc:date>2010-06-05T03:02:00+09:00</dc:date>
    <dc:creator>art55</dc:creator>
    <dc:publisher>JUGEM</dc:publisher>
    <dc:rights>art55</dc:rights>
  </item>

  <item rdf:about="http://pro.art55.jp/?eid=1303786">
    <link>http://pro.art55.jp/?eid=1303786</link>
    <title>【Window 7】Window XP Mode</title>
    <description>JUGEMテーマ：コンピュータ&amp;nbsp;気になっていたWindow XP ModeをWindow ７にインストールしてみた。インストール中にVirtual PC上でXPを動かすだけだとうすうす感じながら、実際に起動してみて、予想的中。レガシーなアプリケーションがWindows 7上で動作しない時に、使...</description>
<content:encoded><![CDATA[
<DIV class=jugem_theme>JUGEMテーマ：<A href="http://jugem.jp/theme/c247/13/" target=_blank>コンピュータ</A></DIV>&nbsp;<BR>気になっていたWindow XP ModeをWindow ７にインストールしてみた。インストール中にVirtual PC上でXPを動かすだけだとうすうす感じながら、実際に起動してみて、予想的中。レガシーなアプリケーションがWindows 7上で動作しない時に、使うんですね。うん。<BR><BR>現状、私には必要ありませんでした。入れる前に検討した方がよかったですね。
]]></content:encoded>
    <dc:subject>Windows7</dc:subject>
    <dc:date>2010-06-01T02:28:00+09:00</dc:date>
    <dc:creator>art55</dc:creator>
    <dc:publisher>JUGEM</dc:publisher>
    <dc:rights>art55</dc:rights>
<taxo:topics>
<rdf:Bag>
<rdf:li rdf:resource="http://jugem.jp/contents/theme.php?theme=13" />
</rdf:Bag>
</taxo:topics>
  </item>

  <item rdf:about="http://pro.art55.jp/?eid=1303785">
    <link>http://pro.art55.jp/?eid=1303785</link>
    <title>【Windows Azure】Windows Azureはじめたいんですが・・・</title>
    <description>
JUGEMテーマ：コンピュータJUGEMテーマ：インターネットWindows Azureを始めたいんですが、どうすればいいでしょうかね？あとＴｗｉｔｔｅｒってやつもやってみたい。</description>
<content:encoded><![CDATA[
<DIV class=jugem_theme>
<DIV class=jugem_theme>JUGEMテーマ：<A href="http://jugem.jp/theme/c247/13/" target=_blank>コンピュータ</A></DIV>JUGEMテーマ：<A href="http://jugem.jp/theme/c91/12/" target=_blank>インターネット</A><BR><BR>Windows Azureを始めたいんですが、どうすればいいでしょうかね？<BR><BR>あとＴｗｉｔｔｅｒってやつもやってみたい。</DIV>
]]></content:encoded>
    <dc:subject>Windows Azure</dc:subject>
    <dc:date>2010-05-28T00:13:00+09:00</dc:date>
    <dc:creator>art55</dc:creator>
    <dc:publisher>JUGEM</dc:publisher>
    <dc:rights>art55</dc:rights>
<taxo:topics>
<rdf:Bag>
<rdf:li rdf:resource="http://jugem.jp/contents/theme.php?theme=13" />
</rdf:Bag>
</taxo:topics>
  </item>

  <item rdf:about="http://pro.art55.jp/?eid=1303784">
    <link>http://pro.art55.jp/?eid=1303784</link>
    <title>【WPF】ListBoxからCheckedListBoxを作成した時のフォーカス処理</title>
    <description>JUGEMテーマ：コンピュータ&amp;nbsp;Source and Project以前、作成したCheckedListBoxに思わぬ挙動をすることがわかったので修正版を作成してみた。【WPF】CheckedListBoxをカスタムコントロールで作成する。http://pro.art55.jp/?eid=1069565上記のURLでは下記のように書い...</description>
<content:encoded><![CDATA[
<DIV class=jugem_theme>JUGEMテーマ：<A href="http://jugem.jp/theme/c247/13/" target=_blank>コンピュータ</A><BR><BR></DIV><IMG class=pict alt=CheckedListBox src="http://img.pro.art55.jp/20100525_3864929.jpg" width=273 height=377>&nbsp;<BR><A href="http://art55.jp/App/20100525/Art55.CheckedListBoxSample20100525_001.zip" target=_blank>Source and Project</A><BR><BR>以前、作成したCheckedListBoxに思わぬ挙動をすることがわかったので修正版を作成してみた。<BR><BR>【WPF】CheckedListBoxをカスタムコントロールで作成する。<BR><A href="http://pro.art55.jp/?eid=1069565">http://pro.art55.jp/?eid=1069565</A><BR><BR>上記のURLでは下記のように書いていました。<BR><BR>&nbsp;&nbsp;&nbsp; &lt;Style TargetType="&#123;x:Type local:MissCheckedListBox&#125;" <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BasedOn="&#123;StaticResource &#123;x:Type ListBox&#125;&#125;"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Setter Property="SelectionMode" Value="Multiple" /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Setter Property="ItemContainerStyle"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Setter.Value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Style TargetType="&#123;x:Type ListBoxItem&#125;"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Setter Property="Template"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Setter.Value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ControlTemplate TargetType="&#123;x:Type ListBoxItem&#125;"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;CheckBox <STRONG><FONT color=#ff0000>Focusable="False"<BR></FONT></STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SnapsToDevicePixels="True"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Foreground="&#123;TemplateBinding Foreground&#125;"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FontFamily="&#123;TemplateBinding FontFamily&#125;"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FontSize="&#123;TemplateBinding FontSize&#125;"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FontStyle="&#123;TemplateBinding FontStyle&#125;"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FontWeight="&#123;TemplateBinding FontWeight&#125;"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HorizontalAlignment="&#123;TemplateBinding HorizontalContentAlignment&#125;"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VerticalAlignment="&#123;TemplateBinding VerticalContentAlignment&#125;"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IsChecked="&#123;Binding Path=IsSelected, Mode=TwoWay, RelativeSource=&#123;RelativeSource TemplatedParent&#125;&#125;"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ContentPresenter/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/CheckBox&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ControlTemplate&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Setter.Value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Setter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Style&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Setter.Value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Setter&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/Style&gt;<BR><BR>注目するところはCheckBoxにフォーカスが移動しないようにしていました。<BR>これを下記にようにかきかえました。<BR><BR>&nbsp;&lt;Style TargetType="&#123;x:Type local:CheckedListBox&#125;" <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BasedOn="&#123;StaticResource &#123;x:Type ListBox&#125;&#125;"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Setter Property="SelectionMode" Value="Multiple" /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Setter Property="ItemContainerStyle"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Setter.Value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Style TargetType="&#123;x:Type ListBoxItem&#125;"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG><FONT color=#ff0000>&lt;Setter Property="Focusable" Value="False" /&gt;<BR></FONT></STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Setter Property="Template"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Setter.Value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ControlTemplate TargetType="&#123;x:Type ListBoxItem&#125;"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;CheckBox Focusable="True"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG><FONT color=#ff0000>SnapsToDevicePixels="True"<BR></FONT></STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Foreground="&#123;TemplateBinding Foreground&#125;"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FontFamily="&#123;TemplateBinding FontFamily&#125;"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FontSize="&#123;TemplateBinding FontSize&#125;"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FontStyle="&#123;TemplateBinding FontStyle&#125;"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FontWeight="&#123;TemplateBinding FontWeight&#125;"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HorizontalAlignment="&#123;TemplateBinding HorizontalContentAlignment&#125;"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VerticalAlignment="&#123;TemplateBinding VerticalContentAlignment&#125;"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IsChecked="&#123;Binding Path=IsSelected, Mode=TwoWay, RelativeSource=&#123;RelativeSource TemplatedParent&#125;&#125;"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ContentPresenter/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/CheckBox&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ControlTemplate&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Setter.Value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Setter&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Style&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Setter.Value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Setter&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/Style&gt;<BR><BR>こっちはListBoxItemにフォーカス移動がないようにして、CheckBoxにフォーカス移動可能にしています。この微妙な違いは、フォーカス移動に微妙な違いをもたらします。<BR><BR>どう違うかは実際に実行してみて試してみてください。上はクリックするとフォーカスが移動しますが、下は移動しません。<BR><BR><A href="http://art55.jp/App/20100525/Art55.CheckedListBoxSample20100525_001.zip" target=_blank>Source and Project</A>
]]></content:encoded>
    <dc:subject>WPF</dc:subject>
    <dc:date>2010-05-25T22:13:00+09:00</dc:date>
    <dc:creator>art55</dc:creator>
    <dc:publisher>JUGEM</dc:publisher>
    <dc:rights>art55</dc:rights>
<taxo:topics>
<rdf:Bag>
<rdf:li rdf:resource="http://jugem.jp/contents/theme.php?theme=13" />
</rdf:Bag>
</taxo:topics>
  </item>

  <item rdf:about="http://pro.art55.jp/?eid=1303783">
    <link>http://pro.art55.jp/?eid=1303783</link>
    <title>【MEF】（仮）リフレクション べース プログラミング モデル。</title>
    <description>JUGEMテーマ：コンピュータ&amp;nbsp;正しい名前がわからないので「リフレクション べース プログラミング モデル」に（仮）をつけてみましたが、ＭＥＦには属性付きプログラミングモデルではなく、リフレクションがべースとなるプログラミングモデルも存在するはずです。たと...</description>
<content:encoded><![CDATA[
<DIV class=jugem_theme>JUGEMテーマ：<A href="http://jugem.jp/theme/c247/13/" target=_blank>コンピュータ</A></DIV>&nbsp;<BR>正しい名前がわからないので「リフレクション べース プログラミング モデル」に（仮）をつけてみましたが、ＭＥＦには属性付きプログラミングモデルではなく、リフレクションがべースとなるプログラミングモデルも存在するはずです。たとえば、XML形式でExportやImportを指定し、そこからリフレクションでアセンブリから実際にインスタンスを管理していく方法です。<BR><BR>MSDNライブラリーを眺めてみると、ツール類はそろっているようです。<BR><BR><A href="http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&amp;l=JA-JP&amp;k=k(SYSTEM.COMPONENTMODEL.COMPOSITION.REFLECTIONMODEL.REFLECTIONMODELSERVICES);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-CSHARP)&amp;rd=true" target=_blank>ReflectionModelServices クラス</A><BR><SPAN id=xn1_227cf85d1d9073e1ce4d734c3376fc48 class=sentence>リフレクション ベースのパーツを作成および取得する拡張メソッドを提供します。<BR></SPAN><STRONG>名前空間:</STRONG> &nbsp;<A href='http://msdn.microsoft.com/ja-jp/library/system.componentmodel.composition.reflectionmodel(v=VS.100).aspx?appId=Dev10IDEF1&amp;l=JA-JP&amp;k=k(SYSTEM.COMPONENTMODEL.COMPOSITION.REFLECTIONMODEL.REFLECTIONMODELSERVICES);k(TargetFrameworkMoniker-".NETFRAMEWORK&amp;k=VERSION=V4.0");k(DevLang-CSHARP)&amp;rd=true'><FONT color=#1364c4>System.ComponentModel.Composition.ReflectionModel</FONT></A><BR><STRONG>アセンブリ:</STRONG> &nbsp;<SPAN>System.ComponentModel.Composition</SPAN> (System.ComponentModel.Composition.dll 内)<BR><BR>メンバーをみると楽しげなのがいっぱいあります。<BR><BR><BR><BR>ちなみに属性付きプログラミングモデル用に<BR><BR><A href="http://msdn.microsoft.com/ja-jp/library/system.componentmodel.composition.attributedmodelservices.aspx" target=_blank>AttributedModelServices クラス</A><BR><SPAN id=xn1_9e2fd2fb7100c1c44aaf61538fe4b4f7 class=sentence>属性付きのプログラミング モデルを合成で使用するためのヘルパー メソッドが含まれています。<BR></SPAN><STRONG>名前空間:</STRONG> &nbsp;<A href="http://msdn.microsoft.com/ja-jp/library/system.componentmodel.composition.aspx"><FONT color=#1364c4>System.ComponentModel.Composition</FONT></A><BR><STRONG>アセンブリ:</STRONG> &nbsp;<SPAN>System.ComponentModel.Composition</SPAN> (System.ComponentModel.Composition.dll 内)<BR><BR>というのがあり、最近、よく使ってます・・・ただし、ReflectionModelServices側のメソッドを使った方がよかったような気がするサンプルコードもありますが・・・汗
]]></content:encoded>
    <dc:subject>MEF</dc:subject>
    <dc:date>2010-05-25T21:28:00+09:00</dc:date>
    <dc:creator>art55</dc:creator>
    <dc:publisher>JUGEM</dc:publisher>
    <dc:rights>art55</dc:rights>
<taxo:topics>
<rdf:Bag>
<rdf:li rdf:resource="http://jugem.jp/contents/theme.php?theme=13" />
</rdf:Bag>
</taxo:topics>
  </item>

  <item rdf:about="http://pro.art55.jp/?eid=1303782">
    <link>http://pro.art55.jp/?eid=1303782</link>
    <title>【ＭＥＦ】自作カタログ　絶対真似しないでください危険です。</title>
    <description>
JUGEMテーマ：コンピュータSource and Project※当Ｂｌｏｇの最近のＭＥＦの投稿はＭＥＦフレームワークを必ずしも正しい使い方をしているとは限りませんので注意してください。ComposablePartCatalog クラス、ComposablePartDefinition クラス、ComposablePart クラスを...</description>
<content:encoded><![CDATA[
<A href="http://art55.jp/App/20100525/Art55.MEFSample20100525_001.zip" target=_blank>
<DIV class=jugem_theme>JUGEMテーマ：</A><A href="http://jugem.jp/theme/c247/13/" target=_blank>コンピュータ</A><BR><A href="http://art55.jp/App/20100525/Art55.MEFSample20100525_001.zip" target=_blank><BR>Source and Project</A><BR><BR>※当Ｂｌｏｇの最近のＭＥＦの投稿はＭＥＦフレームワークを必ずしも正しい使い方をしているとは限りませんので注意してください。<BR><BR>ComposablePartCatalog クラス、ComposablePartDefinition クラス、ComposablePart クラスを使用して自作カタログを作成しました。クラスのそれぞれの責務はＭＳＤＮライブラリーによると<BR><BR>-------------------<BR>ComposablePartCatalog クラス<BR>ComposablePartDefinition オブジェクトを収集して返すコンポーザブル パーツ カタログの抽象基本クラスを表します。</DIV>
<P>ComposablePartDefinition クラス<BR>ComposablePart オブジェクトの作成を記述して有効にするコンポーザブル パーツ定義の抽象基本クラスを定義します。</P>
<P>ComposablePart クラス<BR>オブジェクトをインポートしたり、エクスポートされたオブジェクトを生成したりするコンポーザブル パーツの抽象基本クラスを定義します。<BR>--------------------<BR><BR>カタログを自作したり拡張したい場合にすべてをこれらの抽象クラスから直接継承する必要は全くないと思いますが、これらの抽象クラスのメンバーがいつ呼ばれるのかシーケンスが知りたいのと、属性付きプログラミング　モデル以外でも実装可能なことを試してみたいなど、いろいろやってみたいことがあったので、実装してみました。<BR><BR>using System;<BR>using System.Collections.Generic;<BR>using System.ComponentModel.Composition.Primitives;<BR>using System.Linq;</P>
<P>namespace Art55.MEF.JunkLib<BR>&#123;<BR>&nbsp;&nbsp;&nbsp; public class MyComposablePartCatalog : ComposablePartCatalog<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public MyComposablePartCatalog(params Type[] types)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _partDefinitionList = new List&lt;ComposablePartDefinition&gt;();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (Type type in types)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _partDefinitionList.Add(new MyComposablePartDefinition(type));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override IQueryable&lt;ComposablePartDefinition&gt; Parts<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get &#123; return _partDefinitionList.AsQueryable(); &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private readonly List&lt;ComposablePartDefinition&gt; _partDefinitionList;<BR>&nbsp;&nbsp;&nbsp; &#125;<BR>&#125;<BR><BR><BR>using System;<BR>using System.Collections.Generic;<BR>using System.ComponentModel.Composition;<BR>using System.ComponentModel.Composition.Hosting;<BR>using System.ComponentModel.Composition.Primitives;<BR>using System.Linq;<BR>using System.Reflection;</P>
<P>namespace Art55.MEF.JunkLib<BR>&#123;<BR>&nbsp;&nbsp;&nbsp; class MyComposablePartDefinition : ComposablePartDefinition<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public MyComposablePartDefinition(Type type)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _type = type;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var metadata = new Dictionary&lt;string, object&gt;();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; metadata[CompositionConstants.ExportTypeIdentityMetadataName] =<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AttributedModelServices.GetTypeIdentity(type);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _rootExportDefinition = new ExportDefinition(AttributedModelServices.GetContractName(type), metadata);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _exportDefinitionList = new List&lt;ExportDefinition&gt; &#123; _rootExportDefinition &#125;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _importDefinitionList = new Dictionary&lt;ImportDefinition, PropertyInfo&gt;();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (PropertyInfo propertyInfo in type.GetProperties())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (propertyInfo.CanWrite)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type importType = propertyInfo.PropertyType;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var importDefinition = new ContractBasedImportDefinition(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AttributedModelServices.GetContractName(importType),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AttributedModelServices.GetTypeIdentity(importType),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enumerable.Empty&lt;KeyValuePair&lt;string, Type&gt;&gt;(),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImportCardinality.ExactlyOne,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; false,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; false,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CreationPolicy.Shared);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _importDefinitionList.Add(importDefinition, propertyInfo);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override IEnumerable&lt;ExportDefinition&gt; ExportDefinitions<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get &#123; return _exportDefinitionList; &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override IEnumerable&lt;ImportDefinition&gt; ImportDefinitions<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get &#123; return _importDefinitionList.Keys; &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override ComposablePart CreatePart()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new MyComposablePart(this);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Export CreateExport()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new Export(_rootExportDefinition, () =&gt; Activator.CreateInstance(_type));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; internal void SetImport(object obj, ImportDefinition importDefinition, Export export)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (_importDefinitionList.ContainsKey(importDefinition))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PropertyInfo propertyInfo = _importDefinitionList[importDefinition];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; propertyInfo.SetValue(obj, export.Value, null);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private readonly Type _type;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private readonly ExportDefinition _rootExportDefinition;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private readonly List&lt;ExportDefinition&gt; _exportDefinitionList;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private readonly Dictionary&lt;ImportDefinition, PropertyInfo&gt; _importDefinitionList;<BR>&nbsp;&nbsp;&nbsp; &#125;<BR>&#125;<BR><BR><BR>using System;<BR>using System.Collections.Generic;<BR>using System.ComponentModel.Composition.Primitives;<BR>using System.Linq;</P>
<P>namespace Art55.MEF.JunkLib<BR>&#123;<BR>&nbsp;&nbsp;&nbsp; class MyComposablePart : ComposablePart<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public MyComposablePart(MyComposablePartDefinition definition)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (definition == null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new ArgumentNullException("definition");</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _definition = definition;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override IEnumerable&lt;ExportDefinition&gt; ExportDefinitions<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get &#123; return _definition.ExportDefinitions; &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override IEnumerable&lt;ImportDefinition&gt; ImportDefinitions<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get &#123; return _definition.ImportDefinitions; &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override object GetExportedValue(ExportDefinition definition)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (_definition.Equals(definition))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new ArgumentException("definition");</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; object result = _definition.CreateExport().Value;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (ImportDefinition importDefinition in _importSetting.Keys)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (_importSetting.ContainsKey(importDefinition) &amp;&amp; _importSetting[importDefinition].Count() == 1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _definition.SetImport(result, importDefinition, _importSetting[importDefinition].First());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return result;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override void SetImport(ImportDefinition definition, IEnumerable&lt;Export&gt; exports)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _importSetting[definition] = exports;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private readonly Dictionary&lt;ImportDefinition, IEnumerable&lt;Export&gt;&gt; _importSetting = new Dictionary&lt;ImportDefinition, IEnumerable&lt;Export&gt;&gt;();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private readonly MyComposablePartDefinition _definition;<BR>&nbsp;&nbsp;&nbsp; &#125;<BR>&#125;<BR><BR>これらのクラスを使用してカタログを作成すると<BR><BR>指定したＴｙｐｅは必ずExportとなり、publicなＧｅｔｔｅｒが存在するプロパティは必ずＩｍｐｏｒｔとして設定されます。そして、Exportからインスタンスを作成時にインジェクションされます。実際のライブラリーを使用してインスタンスを作成するコードを書いてみると<BR><BR>using System;<BR>using System.ComponentModel.Composition.Hosting;<BR>using Art55.MEF.JunkLib;</P>
<P>namespace Art55.MEFSample20100525_001<BR>&#123;<BR>&nbsp;&nbsp;&nbsp; class Program<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void Main(string[] args)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var types = new[] &#123;typeof (B), typeof (A), typeof (C)&#125;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var catalog = new MyComposablePartCatalog(types);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var container = new CompositionContainer(catalog);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A a = container.GetExportedValue&lt;A&gt;();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.Say();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp; public class A<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public B BObject &#123; private get; set; &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Say()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BObject.Say();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp; public class B<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public C CObject &#123; private get; set; &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Say()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CObject.Say();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp; public class C<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Say()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("C Say");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp; &#125;<BR>&#125;<BR><BR>実行すると<BR><BR>C Say<BR><BR>と出力されます。一応、属性指定なしにＥｘｐｏｒｔやＩｍｐｏｒｔが指定可能なカタログが作成できました。<BR><BR><A href="http://art55.jp/App/20100525/Art55.MEFSample20100525_001.zip" target=_blank>Source and Project</A></P>
]]></content:encoded>
    <dc:subject>MEF</dc:subject>
    <dc:date>2010-05-25T20:59:00+09:00</dc:date>
    <dc:creator>art55</dc:creator>
    <dc:publisher>JUGEM</dc:publisher>
    <dc:rights>art55</dc:rights>
<taxo:topics>
<rdf:Bag>
<rdf:li rdf:resource="http://jugem.jp/contents/theme.php?theme=13" />
</rdf:Bag>
</taxo:topics>
  </item>

  <item rdf:about="http://pro.art55.jp/?eid=1303781">
    <link>http://pro.art55.jp/?eid=1303781</link>
    <title>【MEF】ImportDefinition.IsConstraintSatisfiedBy メソッド</title>
    <description>JUGEMテーマ：コンピュータ&amp;nbsp;ImportDefinition.IsConstraintSatisfiedBy メソッド 指定した定義で表されるエクスポートが、このインポート定義の制約を満たすかどうかを示す値を取得します。これがうまくいかない！・・・独り言です。</description>
<content:encoded><![CDATA[
<DIV class=jugem_theme>JUGEMテーマ：<A href="http://jugem.jp/theme/c247/13/" target=_blank>コンピュータ</A></DIV>&nbsp;ImportDefinition.IsConstraintSatisfiedBy メソッド <BR>指定した定義で表されるエクスポートが、このインポート定義の制約を満たすかどうかを示す値を取得します。<BR><BR>これがうまくいかない！<BR><BR><BR><BR><BR><BR>・・・独り言です。
]]></content:encoded>
    <dc:subject>MEF</dc:subject>
    <dc:date>2010-05-24T21:35:00+09:00</dc:date>
    <dc:creator>art55</dc:creator>
    <dc:publisher>JUGEM</dc:publisher>
    <dc:rights>art55</dc:rights>
<taxo:topics>
<rdf:Bag>
<rdf:li rdf:resource="http://jugem.jp/contents/theme.php?theme=13" />
</rdf:Bag>
</taxo:topics>
  </item>

  <item rdf:about="http://pro.art55.jp/?eid=1303780">
    <link>http://pro.art55.jp/?eid=1303780</link>
    <title>【雑記】Sony Type Z(VPCZ1) 使って一カ月</title>
    <description>JUGEMテーマ：コンピュータ&amp;nbsp;月の初めに購入したノートPCのSony Type Z (VPCZ1)ですが、とくに不満もなく、実にいい買い物をしたと思ってます。先代のType SZは解像度やキーボードが手になじまず、Vistaはやっぱり重く、結構不満がありました。今回のType Zは解像度も...</description>
<content:encoded><![CDATA[
<DIV class=jugem_theme>JUGEMテーマ：<A href="http://jugem.jp/theme/c247/13/" target=_blank>コンピュータ</A></DIV>&nbsp;<BR>月の初めに購入したノートPCのSony Type Z (VPCZ1)ですが、とくに不満もなく、実にいい買い物をしたと思ってます。先代のType SZは解像度やキーボードが手になじまず、Vistaはやっぱり重く、結構不満がありました。今回のType Zは解像度も結構あり、プログラミングしやすい、キーボードも結構すきな感触です。キーとキーに隙間があり、私の場合、結構精度の悪い指の動きでもどこをたたけばいいのか一発でわかります（この手の問題は私固有の問題だと思います）それとSDDなのでハードディスクが起因となるようなパフォーマンスの問題は発生してません。不安が全くありません。ああ、でもまた買え変えた時は前のは不満があったっていいそうですが（笑）<BR><BR>普通、最初に測るものだと思いますが、先ほど測ってみました。<BR><BR>Windows エクスペリエンス　インデックス<BR><IMG style="WIDTH: 499px; HEIGHT: 162px" class=pict alt="Windows エクスペリエンス　インデックス" src="http://img.pro.art55.jp/20100524_3861378.jpg" width=735 height=261><BR><BR>Windows エクスペリエンス　インデックスは、主なシステム　コンポーネントを1.0から7.9のスコアで評価した値です。と書かれているので、ハードディスクはMAXいってますね。すごー。
]]></content:encoded>
    <dc:subject>コンピュータ全般</dc:subject>
    <dc:date>2010-05-24T01:07:00+09:00</dc:date>
    <dc:creator>art55</dc:creator>
    <dc:publisher>JUGEM</dc:publisher>
    <dc:rights>art55</dc:rights>
<taxo:topics>
<rdf:Bag>
<rdf:li rdf:resource="http://jugem.jp/contents/theme.php?theme=13" />
</rdf:Bag>
</taxo:topics>
  </item>

  <item rdf:about="http://pro.art55.jp/?eid=1303779">
    <link>http://pro.art55.jp/?eid=1303779</link>
    <title>【.NET Framework 4】.NET Framework 4 技術資料一覧</title>
    <description>JUGEMテーマ：コンピュータ.NET Framework 4 技術資料一覧http://msdn.microsoft.com/ja-jp/netframework/ee959223.aspxホワイトペーパーとかTraning Kitとかあるみたいです。</description>
<content:encoded><![CDATA[
<DIV class=jugem_theme>JUGEMテーマ：<A href="http://jugem.jp/theme/c247/13/" target=_blank>コンピュータ</A><BR><BR></DIV>.NET Framework 4 技術資料一覧<A href="http://msdn.microsoft.com/ja-jp/netframework/ee959223.aspx"><BR>http://msdn.microsoft.com/ja-jp/netframework/ee959223.aspx</A><BR><BR>ホワイトペーパーとかTraning Kitとかあるみたいです。
]]></content:encoded>
    <dc:subject>.NET Framework</dc:subject>
    <dc:date>2010-05-23T23:37:00+09:00</dc:date>
    <dc:creator>art55</dc:creator>
    <dc:publisher>JUGEM</dc:publisher>
    <dc:rights>art55</dc:rights>
<taxo:topics>
<rdf:Bag>
<rdf:li rdf:resource="http://jugem.jp/contents/theme.php?theme=13" />
</rdf:Bag>
</taxo:topics>
  </item>

  <item rdf:about="http://pro.art55.jp/?eid=1303778">
    <link>http://pro.art55.jp/?eid=1303778</link>
    <title>【MEF】ContractBasedImportDefinition クラス</title>
    <description>JUGEMテーマ：コンピュータhttp://mef.codeplex.com/wikipage?title=FAQ&amp;amp;referringTitle=GuideCodePlexの上記のページを眺めていたらContractBasedImportDefinitionの引数が微妙に違うことに気づき、.NET Framework 4のMEFはどう書くんだろうか気になったのでためしに...</description>
<content:encoded><![CDATA[
<DIV class=jugem_theme>JUGEMテーマ：<A href="http://jugem.jp/theme/c247/13/" target=_blank>コンピュータ</A><BR><BR><A href="http://mef.codeplex.com/wikipage?title=FAQ&amp;referringTitle=Guide">http://mef.codeplex.com/wikipage?title=FAQ&amp;referringTitle=Guide</A><BR>CodePlexの上記のページを眺めていたらContractBasedImportDefinitionの引数が微妙に違うことに気づき、.NET Framework 4のMEFはどう書くんだろうか気になったのでためしにコードを書いてみました。<BR><BR>using System;<BR>using System.Collections.Generic;<BR>using System.ComponentModel.Composition;<BR>using System.ComponentModel.Composition.Hosting;<BR>using System.ComponentModel.Composition.Primitives;<BR>using System.Linq;<BR>using System.Text;</DIV>
<P>namespace Art55.MEFSample20100522_001<BR>&#123;<BR>&nbsp;&nbsp;&nbsp; class Program<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void Main(string[] args)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var catalog = new TypeCatalog(new[] &#123; typeof(A), typeof(B) &#125;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var container = new CompositionContainer(catalog);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var importDefinition = new ContractBasedImportDefinition(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AttributedModelServices.GetContractName(typeof(A)),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AttributedModelServices.GetTypeIdentity(typeof(A)),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enumerable.Empty&lt;KeyValuePair&lt;string, Type&gt;&gt;(),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImportCardinality.ExactlyOne,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; false,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; false,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CreationPolicy.Shared);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Export export = container.GetExports(importDefinition).First();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A a = (A) export.Value;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.Say();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp; [Export]<BR>&nbsp;&nbsp;&nbsp; class A<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Import]<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public B BObject &#123; private get; set; &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Say()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BObject.Say();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp; [Export]<BR>&nbsp;&nbsp;&nbsp; class B<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Say()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("B Say.");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp; &#125;<BR>&#125;<BR><BR>実行すると<BR><BR>B Say.<BR><BR>とまあいつものとおり動きました。<BR><BR>ExportProvider.GetExports メソッド (ImportDefinition)は指定したインポート定義の条件に一致するすべてのエクスポートを取得します。との事なので属性付きプログラミングモデル以外で自作でExportProviderを自作したい場合に何らかの方法でImportが指定されたプロパティなどからImportDefinitionを作成して、GetExports メソッドを呼び出せばいいかなーなんて・・・・たぶん。</P>
]]></content:encoded>
    <dc:subject>MEF</dc:subject>
    <dc:date>2010-05-22T23:50:00+09:00</dc:date>
    <dc:creator>art55</dc:creator>
    <dc:publisher>JUGEM</dc:publisher>
    <dc:rights>art55</dc:rights>
<taxo:topics>
<rdf:Bag>
<rdf:li rdf:resource="http://jugem.jp/contents/theme.php?theme=13" />
</rdf:Bag>
</taxo:topics>
  </item>

  <item rdf:about="http://pro.art55.jp/?eid=1303777">
    <link>http://pro.art55.jp/?eid=1303777</link>
    <title>【雑記】Googleのトップページがパックマンになってる！</title>
    <description>
JUGEMテーマ：インターネットJUGEMテーマ：コンピュータ&amp;nbsp;Googleのトップページがパックマンになってます。しかも実際にプレイすることができます。以上！</description>
<content:encoded><![CDATA[
<DIV class=jugem_theme>
<DIV class=jugem_theme>JUGEMテーマ：<A href="http://jugem.jp/theme/c91/12/" target=_blank>インターネット</A></DIV>JUGEMテーマ：<A href="http://jugem.jp/theme/c247/13/" target=_blank>コンピュータ</A></DIV>&nbsp;<BR>Googleのトップページがパックマンになってます。<BR>しかも実際にプレイすることができます。<BR><BR>以上！
]]></content:encoded>
    <dc:subject></dc:subject>
    <dc:date>2010-05-22T01:22:00+09:00</dc:date>
    <dc:creator>art55</dc:creator>
    <dc:publisher>JUGEM</dc:publisher>
    <dc:rights>art55</dc:rights>
<taxo:topics>
<rdf:Bag>
<rdf:li rdf:resource="http://jugem.jp/contents/theme.php?theme=12" />
</rdf:Bag>
</taxo:topics>
  </item>

  <item rdf:about="http://pro.art55.jp/?eid=1303776">
    <link>http://pro.art55.jp/?eid=1303776</link>
    <title>【MEF】カラログを自作するにはどうすればいいんだ？</title>
    <description>JUGEMテーマ：コンピュータ
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class MyComposablePart : ComposablePart&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#123;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override IEnumerable&amp;lt;ExportDefinition&amp;gt; ExportDefinitions&amp;nbsp;&amp;nbsp;&amp;nbsp...</description>
<content:encoded><![CDATA[
<DIV class=jugem_theme>JUGEMテーマ：<A href="http://jugem.jp/theme/c247/13/" target=_blank>コンピュータ</A></DIV>
<P><BR>&nbsp;&nbsp;&nbsp;&nbsp; public class MyComposablePart : ComposablePart<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override IEnumerable&lt;ExportDefinition&gt; ExportDefinitions<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get &#123; throw new NotImplementedException(); &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override IEnumerable&lt;ImportDefinition&gt; ImportDefinitions<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get &#123; throw new NotImplementedException(); &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override object GetExportedValue(ExportDefinition definition)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new NotImplementedException();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override void SetImport(ImportDefinition definition, IEnumerable&lt;Export&gt; exports)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new NotImplementedException();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp; public class MyComposablePartDefinition : ComposablePartDefinition<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override IEnumerable&lt;ExportDefinition&gt; ExportDefinitions<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get &#123; throw new NotImplementedException(); &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override IEnumerable&lt;ImportDefinition&gt; ImportDefinitions<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get &#123; throw new NotImplementedException(); &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override ComposablePart CreatePart()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new NotImplementedException();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp; public class MyComposablePartCatalog : ComposablePartCatalog<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override IQueryable&lt;ComposablePartDefinition&gt; Parts<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get &#123; throw new NotImplementedException(); &#125;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp; &#125;<BR><BR>とりあえず未実装ですが、抽象クラスを並べてみました。仕様を決めてカタログを自作できそう？これでは不十分？<BR><BR>抽象クラスのみを使用してカタログを自作するのは難しすぎますね。既存のカタログを拡張する程度がいいのかな？</P>
]]></content:encoded>
    <dc:subject>MEF</dc:subject>
    <dc:date>2010-05-21T22:22:00+09:00</dc:date>
    <dc:creator>art55</dc:creator>
    <dc:publisher>JUGEM</dc:publisher>
    <dc:rights>art55</dc:rights>
<taxo:topics>
<rdf:Bag>
<rdf:li rdf:resource="http://jugem.jp/contents/theme.php?theme=13" />
</rdf:Bag>
</taxo:topics>
  </item>

  <item rdf:about="http://pro.art55.jp/?eid=1303775">
    <link>http://pro.art55.jp/?eid=1303775</link>
    <title>【MEF】AggregateExportProviderを使ってみた。</title>
    <description>JUGEMテーマ：コンピュータAggregateExportProvider クラスExportProvider オブジェクトのコレクションによって提供されるエクスポートを集約します。
名前空間: &amp;nbsp;System.ComponentModel.Composition.Hostingアセンブリ: &amp;nbsp;System.ComponentModel.Composition (...</description>
<content:encoded><![CDATA[
<DIV class=jugem_theme>JUGEMテーマ：<A href="http://jugem.jp/theme/c247/13/" target=_blank>コンピュータ</A><SPAN id=xn1_909a48b2e6e967dbe36fc092242ccc3a class=sentence><SPAN xmlns="http://www.w3.org/1999/xhtml"><BR><BR><A href="http://msdn.microsoft.com/ja-jp/library/system.componentmodel.composition.hosting.aggregateexportprovider.aspx" target=_blank>AggregateExportProvider クラス<BR></A><A href="http://msdn.microsoft.com/ja-jp/library/system.componentmodel.composition.hosting.exportprovider.aspx"><FONT color=#1364c4>ExportProvider</FONT></A></SPAN> オブジェクトのコレクションによって提供されるエクスポートを集約します。</SPAN>
<P></P><STRONG>名前空間:</STRONG> &nbsp;<A href="http://msdn.microsoft.com/ja-jp/library/system.componentmodel.composition.hosting.aspx"><FONT color=#1364c4>System.ComponentModel.Composition.Hosting</FONT></A><BR><STRONG>アセンブリ:</STRONG> &nbsp;<SPAN>System.ComponentModel.Composition</SPAN> (System.ComponentModel.Composition.dll 内)<BR><BR><BR>AggregateExportProviderクラスを使ってみました。<BR><BR><BR>using System;<BR>using System.ComponentModel.Composition;<BR>using System.ComponentModel.Composition.Hosting;</DIV>
<DIV class=jugem_theme>namespace MEFSample<BR>&#123;<BR>&nbsp;&nbsp;&nbsp; class Program<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void Main(string[] args)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var catalog = new AggregateCatalog(new TypeCatalog(typeof(A), typeof(B), typeof(C)));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var provider = new AggregateExportProvider(new CatalogExportProvider(catalog));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var container = new CompositionContainer(catalog, provider);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IA a = container.GetExportedValue&lt;IA&gt;();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.Say();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp; &#125;</DIV>
<DIV class=jugem_theme>&nbsp;&nbsp;&nbsp; public interface IA<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void Say();<BR>&nbsp;&nbsp;&nbsp; &#125;</DIV>
<DIV class=jugem_theme>&nbsp;&nbsp;&nbsp; public interface IB<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void Say();<BR>&nbsp;&nbsp;&nbsp; &#125;</DIV>
<DIV class=jugem_theme>&nbsp;&nbsp;&nbsp; public interface IC<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void Say();<BR>&nbsp;&nbsp;&nbsp; &#125;</DIV>
<DIV class=jugem_theme>&nbsp;&nbsp;&nbsp; [Export(typeof(IA))]<BR>&nbsp;&nbsp;&nbsp; class A : IA<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Import]<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public IB B &#123; get; set; &#125;</DIV>
<DIV class=jugem_theme>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Say()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B.Say();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp; &#125;</DIV>
<DIV class=jugem_theme>&nbsp;&nbsp;&nbsp; [Export(typeof(IB))]<BR>&nbsp;&nbsp;&nbsp; class B : IB<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Import]<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public IC C &#123; get; set; &#125;</DIV>
<DIV class=jugem_theme>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Say()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C.Say();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp; &#125;</DIV>
<DIV class=jugem_theme>&nbsp;&nbsp;&nbsp; [Export(typeof(IC))]<BR>&nbsp;&nbsp;&nbsp; class C : IC<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Say()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("C Say");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp; &#125;<BR>&#125;<BR><BR>カタログ、プロバイダー（コンテナ）、エックスポート、インポート・・・いろいろ覚えることありますね。</DIV>
]]></content:encoded>
    <dc:subject>MEF</dc:subject>
    <dc:date>2010-05-21T01:15:00+09:00</dc:date>
    <dc:creator>art55</dc:creator>
    <dc:publisher>JUGEM</dc:publisher>
    <dc:rights>art55</dc:rights>
<taxo:topics>
<rdf:Bag>
<rdf:li rdf:resource="http://jugem.jp/contents/theme.php?theme=13" />
</rdf:Bag>
</taxo:topics>
  </item>

  <item rdf:about="http://pro.art55.jp/?eid=1303774">
    <link>http://pro.art55.jp/?eid=1303774</link>
    <title>【MEF】ComposablePartExportProviderを試してみた。</title>
    <description>JUGEMテーマ：コンピュータComposablePartExportProviderクラスComposablePart によって提供される Export オブジェクトへのアクセスを提供します。

名前空間: &amp;nbsp;System.ComponentModel.Composition.Hostingアセンブリ: &amp;nbsp;System.ComponentModel.Composition (...</description>
<content:encoded><![CDATA[
<DIV class=jugem_theme>JUGEMテーマ：<A href="http://jugem.jp/theme/c247/13/" target=_blank>コンピュータ</A></DIV><SPAN id=xn1_8903a1ce4d929adacef9d42d525f81e3 class=sentence><SPAN xmlns="http://www.w3.org/1999/xhtml"><A href="http://msdn.microsoft.com/ja-jp/library/system.componentmodel.composition.primitives.composablepart.aspx"><FONT color=#1364c4><BR><FONT color=#000000></FONT></A><A href="http://msdn.microsoft.com/ja-jp/library/system.componentmodel.composition.hosting.composablepartexportprovider.aspx" target=_blank><FONT color=#000000>ComposablePartExportProviderクラス</FONT><BR></A><A href="http://msdn.microsoft.com/ja-jp/library/system.componentmodel.composition.primitives.composablepart.aspx">ComposablePart</FONT></A></SPAN> によって提供される <SPAN xmlns="http://www.w3.org/1999/xhtml"><A href="http://msdn.microsoft.com/ja-jp/library/system.componentmodel.composition.primitives.export.aspx"><FONT color=#1364c4>Export</FONT></A></SPAN> オブジェクトへのアクセスを提供します。</SPAN>
<P></P>
<P><STRONG>名前空間:</STRONG> &nbsp;<A href="http://msdn.microsoft.com/ja-jp/library/system.componentmodel.composition.hosting.aspx"><FONT color=#1364c4>System.ComponentModel.Composition.Hosting</FONT></A><BR><STRONG>アセンブリ:</STRONG> &nbsp;<SPAN>System.ComponentModel.Composition</SPAN> (System.ComponentModel.Composition.dll 内)<BR><BR>今度はComposablePartExportProviderを使用してみました。MEFの正しい使い方をしているとは思えませんが、ちょびちょびコードを書いてみて動きを見てみたいのです。いや、MSDNライブラリーを読むのに疲れてコードが書きたくなっただけなのですが・・・<BR><BR>using System;<BR>using System.ComponentModel.Composition;<BR>using System.ComponentModel.Composition.Hosting;<BR>using System.ComponentModel.Composition.Primitives;</P>
<P>namespace MEFSample<BR>&#123;<BR>&nbsp;&nbsp;&nbsp; class Program<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void Main(string[] args)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var provider = new ComposablePartExportProvider<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SourceProvider =<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new CompositionContainer(new TypeCatalog(new[] &#123;typeof (B)&#125;))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var batch =new CompositionBatch();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; batch.AddPart(new A());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; provider.Compose(batch);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IA a = provider.GetExportedValue&lt;IA&gt;();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.Say();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp; public interface IA<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void Say();<BR>&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp; public interface IB<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void Say();<BR>&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp; [Export(typeof(IA))]<BR>&nbsp;&nbsp;&nbsp; class A : IA<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Import]<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public IB B &#123; get; set; &#125;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Say()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B.Say();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp; &#125;</P>
<P>&nbsp;&nbsp;&nbsp; [Export(typeof(IB))]<BR>&nbsp;&nbsp;&nbsp; class B : IB<BR>&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Say()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("B Say");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<BR>&nbsp;&nbsp;&nbsp; &#125;<BR>&#125;<BR><BR>あらかじめカタログ経由で用意していたパーツと属性によりパーツとして指定してあるオブジェクトを外部からプロバイダーに入れてみると、あらあら不思議、Import属性が指定された部分にインジェクションされている。というサンプルです。<BR><BR>ちょっと感動。</P>
]]></content:encoded>
    <dc:subject>MEF</dc:subject>
    <dc:date>2010-05-21T00:30:00+09:00</dc:date>
    <dc:creator>art55</dc:creator>
    <dc:publisher>JUGEM</dc:publisher>
    <dc:rights>art55</dc:rights>
<taxo:topics>
<rdf:Bag>
<rdf:li rdf:resource="http://jugem.jp/contents/theme.php?theme=13" />
</rdf:Bag>
</taxo:topics>
  </item>

</rdf:RDF>