servicestack,servicestack-ioc,C#,Dependency Injection,servicestack,Servicestack Ioc" /> servicestack,servicestack-ioc,C#,Dependency Injection,servicestack,Servicestack Ioc" />

C# 有没有一种方法可以使用IoC容器向助手类注入依赖项?

C# 有没有一种方法可以使用IoC容器向助手类注入依赖项?,c#,dependency-injection,servicestack,servicestack-ioc,C#,Dependency Injection,servicestack,Servicestack Ioc,我有一个助手类,我正在我的一个服务中实例化它。我想知道是否有一种方法可以使用IoC容器注入存储库,并将其作为属性,而不是从服务传递自动连接的存储库 这是因为这个helper类正在实现一个接口,而实现该接口的其他类可能不一定需要在该特定方法中采用该接口 我试图在不改变大量代码的情况下解决这个问题 public class SomeService : Service { public IRepository Repo { get; set; } public object Get(R

我有一个助手类,我正在我的一个服务中实例化它。我想知道是否有一种方法可以使用IoC容器注入存储库,并将其作为属性,而不是从服务传递自动连接的存储库

这是因为这个helper类正在实现一个接口,而实现该接口的其他类可能不一定需要在该特定方法中采用该接口

我试图在不改变大量代码的情况下解决这个问题

public class SomeService : Service
{
    public IRepository Repo { get; set; }
    public object Get(Request req)
    {
        var helper = new SomeServiceHelper();
        var somethingFromHelper = helper.GetSomething();

        var SomethingFromRepo = Repo.GetSomethingElse();

        .
        .
        .
    }

    public object Post(Request req)
    {
        Repo.SaveSomething(something);
    }
}

public class SomeServiceHelper : IHelper
{
    public IRepository Repo { get; set; }
    public object GetSomething()
    {
        Repo.GetSomethingFromDB();

        .
        .
        .
    }
}
这是因为这个helper类正在实现一个接口和其他类 实现这一点的方法可能不一定需要在该特定方法中采用该方法

您不需要针对接口注册助手类,只需注册具体类型即可,例如:

container.RegisterAutoWired<SomeServiceHelper>();

将SomeServiceHelper类设置为静态可以吗?您不能将其设置为静态,因为静态类无法实现接口
container.Register(c => new SomeServiceHelper {
    Repo = c.Resolve<IRepository>(),
});
public class SomeService : Service
{
    public SomeServiceHelper Helper { get; set; }
    public IRepository Repo { get; set; }
}