我在尝试使用依赖注入和IoC来使我的asmx Web服务使用内部业务层服务时遇到了问题。我希望我的Web服务能够使用内部业务层服务。该Web服务将由来自不同域的外部客户端使用,主要用于发送和接收有关实体(例如订单和客户)的信息。
一个示例:
public class MyService : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return new MyBusinessService().MyMethod();
}
}
public class MyBusinessService : IMyBusinessService
{
public string MyMethod()
{
return "hello";
}
}
我想使用依赖注入来消除创建服务对象时需要使用"new"关键字的需求,但我无法找到方法实现。我可以通过一种叫做“穷人版”依赖注入的方式实现,或者至少我认为是这个名字。
像这样:
public class MyService : System.Web.Services.WebService
{
private IMyBusinessService _myService;
public MyService(IMyBusinessService myService)
{
_myService = myService;
}
public MyService() : this(new MyBusinessServie()) { }
[WebMethod]
public string HelloWorld()
{
return _myService.MyMethod();
}
}
然而,我根本搞不清楚如何使用IoC容器来注入我的依赖项,因为如果没有无参构造函数,我无法让服务运行起来。 请友善一点,我不是有经验的程序员,只是开始测试依赖注入,并成功在我的Windows表单应用程序中使用了StructureMap,但在这个问题上卡住了。