从ServiceStack的IoC容器中解析,该容器依赖于另一个注册元素

时间:2016-09-15 10:11:49

标签: c# .net servicestack inversion-of-control ioc-container

我有一个类应该有一个Service的实例(用于访问数据库和其他服务):

public class MyFoo : IFoo
{
    public Service Service { get; set; }

    public MyFoo (Service service)
    {
        Service = service;
    }
}

我想用ServiceStack的IoC容器注册这个类。目前,我正在这样做

container.Register<IFoo> (c => new MyFoo (c.TryResolve<MyService> ()));

这确实很好用,但是在注册另一个元素时解析容器中的元素非常难看。有没有更优雅的方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

您还可以注册依赖项using one of the AutoWired APIs,例如:

container.RegisterAutoWiredAs<MyFoo,IFoo>()

此外,ServiceStack会为每个公共属性注入任何已注册的依赖项,因此您不需要构造函数,例如:

public class MyFoo : IFoo
{
    public Service Service { get; set; }
}