以下の内容はhttps://yohfee.hatenadiary.org/entry/20100529/1275155196より取得しました。


MEFってみた

この辺を元に。
CompositionContainer Class (System.ComponentModel.Composition.Hosting) | Microsoft Docs

using System;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.Reflection;

namespace ConsoleApplication1
{
    [Export]
    class MyAddin
    {
        public String Data { get { return "Hello"; } }
    }

    [Export]
    class MyProgram
    {
        [Import]
        public MyAddin Addin { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            using (var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly()))
            using (var container = new CompositionContainer(catalog)) 
            {
                Console.WriteLine(container.GetExportedValue<MyProgram>().Addin.Data);
            }
            Console.ReadLine();
        }
    }
}

さて、どう使おうか。


おまけ

Imports System
Imports System.ComponentModel.Composition
Imports System.ComponentModel.Composition.Hosting
Imports System.Reflection

<Export()>
Class MyAddin
    Public ReadOnly Property Data As String
        Get
            Return "Hello"
        End Get
    End Property
End Class

<Export()>
Class MyProgram
    <Import()>
    Public Property Addin As MyAddin
End Class

Module Module1
    Sub Main()
        Using catalog = New AssemblyCatalog(Assembly.GetExecutingAssembly())
            Using container = New CompositionContainer(catalog)
                Console.WriteLine(container.GetExportedValue(Of MyProgram)().Addin.Data)
            End Using
        End Using
        Console.ReadLine()
    End Sub
End Module

行継続いらなくなったのは地味にうれしい。
やっぱりUsingはネストするんだなー。




以上の内容はhttps://yohfee.hatenadiary.org/entry/20100529/1275155196より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14