この辺を元に。
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はネストするんだなー。