class Program
{
static void Main(string[] args)
{
Program p = new Program();
p.Run();
}
void Run()
{
var catalog = new AggregateCatalog(new AssemblyCatalog(Assembly.GetExecutingAssembly()));
var container = new CompositionContainer(catalog);
var batch = new CompositionBatch();
batch.AddPart(this);
container.Compose(batch);
var obj = container.GetExportedObject<EmailMessageSender>();
obj.Sender.Say();
}
}
[Export]
public class MessageSender
{
public void Say()
{
Console.WriteLine("Say Method");
}
}
[Export]
public class EmailMessageSender
{
[Import]
public MessageSender Sender { get; set; }
} |
class Program
{
static void Main(string[] args)
{
Program p = new Program();
p.Run();
}
void Run()
{
var catalog = new AggregateCatalog(new AssemblyCatalog(Assembly.GetExecutingAssembly()));
var container = new CompositionContainer(catalog);
var batch = new CompositionBatch();
batch.AddPart(this);
container.Compose(batch);
var obj = container.GetExportedObject<EmailMessageSender>();
obj.Sender.Say();
var lazyObj = container.GetExportedObject<EmailMessageSenderByLazyExport>();
lazyObj.Sender.GetExportedObject().Say();
}
}
[Export]
public class MessageSender
{
public void Say()
{
Console.WriteLine("Say Method");
}
}
[Export]
public class EmailMessageSender
{
[Import]
public MessageSender Sender { get; set; }
}
[Export]
public class EmailMessageSenderByLazyExport
{
[Import]
public Export<MessageSender> Sender { get; set; }
} |
'Managed Extensibility Framework' 카테고리의 다른 글
[MEF] 8. Strongly Typed Metadata (0) | 2009.04.16 |
---|---|
[MEF] 7. Exports and Metadata (0) | 2009.04.16 |
[MEF] 5. Catalog 사용 (0) | 2009.04.09 |
[MEF] 4. Import 선언 (0) | 2009.04.07 |
[MEF] 3. Export 선언 (0) | 2009.03.29 |