C# 有没有一种方法可以使用IoC容器向助手类注入依赖项?
我有一个助手类,我正在我的一个服务中实例化它。我想知道是否有一种方法可以使用IoC容器注入存储库,并将其作为属性,而不是从服务传递自动连接的存储库 这是因为这个helper类正在实现一个接口,而实现该接口的其他类可能不一定需要在该特定方法中采用该接口 我试图在不改变大量代码的情况下解决这个问题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
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; }
}