Managing Dependencies Between Components

1、Registering Types and Objects

Registering Types with the Unity Container

public class OrderModule : IModule

{

public void Initialize()

{

this.container.RegisterType<IOrdersRepository,OrdersRepository>(new

ContainerControlledLifetimeManager());

...

}

...

}

Registering Types with MEF

[Export(typeof(ILoggerFacade))]

public class CallbackLogger: ILoggerFacade

{

}

protected override void ConfigureContainer()

{

base.ConfigureContainer();

// Because we created the CallbackLogger and itneeds to

// be used immediately, we compose it to satisfyany imports it has.

this.Container.ComposeExportedValue<CallbackLogger>(this.callbackLogger);

}

Resolving Types andObjects

Resolving Instances with Unity

public class OrderModule : IModule

{

public void Initialize()

{

this.container.RegisterType<IOrdersRepository,OrdersRepository>(new

ContainerControlledLifetimeManager());

// Show the Orders Editor view in the shell’smain region.

this.regionManager.RegisterViewWithRegion("MainRegion",

() =>this.container.Resolve<OrdersEditorView>());

// Show the Orders Toolbar view in the shell’stoolbar region.

this.regionManager.RegisterViewWithRegion("GlobalCommandsRegion",

() => this.container.Resolve<OrdersToolBar>());

}

...

}

Resolving Instances with MEF

[ImportingConstructor]

public ModuleA(ILoggerFacade logger,IModuleTracker moduleTracker)

{

if (logger == null)

{

throw newArgumentNullException("logger");

}

if (moduleTracker == null)

{

throw newArgumentNullException("moduleTracker");

}

this.logger = logger;

this.moduleTracker = moduleTracker;

this.moduleTracker.RecordModuleConstructed(WellKnownModuleNames.ModuleA);

}

[Export(typeof(IModuleTracker))]

public class ModuleTracker : IModuleTracker

{

// Due to Silverlight/MEF restrictions, thismust be public.

[Import] public ILoggerFacade Logger;

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sasa007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值