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

Resolving from ServiceStack's IoC container which depends on another registered element

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

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

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

我想用 ServiceStack 的 IoC 容器注册这个 class。目前,我是这样做的

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

这确实工作得很好,但我觉得在注册另一个容器的同时解析容器中的元素非常难看。有没有更优雅的方法来完成这个?

你也可以注册依赖using one of the AutoWired APIs,例如:

container.RegisterAutoWiredAs<MyFoo,IFoo>()

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

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