2013-05-02 128 views

回答

1

通过Bootstrapper.BuildUp()是 - 只需拨打container.BuildUp(instance)

在你的引导程序:

SimpleContainer _container; 

protected override void Configure() 
{ 
    _container = new SimpleContainer(); 

    // Register stuff: 
    _container.RegisterSingleton(typeof(IWindowManager), null, typeof(WindowManager)); 

    base.Configure(); 
} 

// Property inject: 
protected override void BuildUp(object instance) 
{ 
    _container.BuildUp(instance); 
} 

呼吁在代码中IoC.BuildUp将通过Bootstrapper.BuildUp方法

0

是的,它支持通过任何东西。

物业注射

属性注入提供了中注入服务的依赖容器之外创建一个实体的能力。当一个实体被传入BuildUp方法时,它的属性将被检查,并且任何可用的匹配服务都将使用与上面相同的递归逻辑来注入。

... 
     var shellViewModel = new ShellViewModel(); 
     _container.BuildUp(shellViewModel); 
    } 
} 


public class ShellViewModel { 
    public IEventAggregator EventAggregator { get; set; } 
} 

在大多数情况下,构造函数注入是最好的选择,因为它使服务需求明确的,但是物业注入有许多用例。注意属性注入仅适用于接口类型,这一点很重要。

来源:Caliburn.Micro Documentation