using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp2
{
public interface ILogger
{
void say();
}
[Export(typeof(ILogger))]
public class SaiLogger : ILogger
{
public void say()
{
Console.WriteLine("我是外部组件,我被成功装载");
}
}
class Program
{
private static CompositionContainer container;
static void Main(string[] args)
{
var catalog = new AssemblyCatalog(typeof(Program).Assembly);
container = new CompositionContainer(catalog);
MathComputer math = new MathComputer();
container.ComposeParts(math);
math.say();
Console.Read();
}
}
public class MathComputer
{
[Import(typeof(ILogger))]
private ILogger logger;
public void say()
{
logger.say();
}
}
}
运行结果:
![]()

本文介绍了一个基于MVC模式的依赖注入实践案例,通过使用.NET框架中的CompositionContainer实现组件之间的解耦合。具体展示了如何定义接口ILogger,实现类SaiLogger以及使用CompositionContainer进行依赖注入的过程。
6499

被折叠的 条评论
为什么被折叠?



