Vì vậy, tôi đã gặp khó khăn trong khi cố gắng để có được webservice asmx của tôi để sử dụng tiêm phụ thuộc và sử dụng một IoC để làm điều đó. Tôi muốn dịch vụ web của tôi có thể sử dụng các dịch vụ lớp kinh doanh nội bộ của mình. Webservice sẽ được sử dụng bởi một máy khách bên ngoài từ một miền khác và chủ yếu sẽ được sử dụng để gửi và nhận thông tin về các thực thể như Đơn hàng và Khách hàng.ASMX Dependency Injection và IoC
Một ví dụ sẽ là:
public class MyService : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return new MyBusinessService().MyMethod();
}
}
public class MyBusinessService : IMyBusinessService
{
public string MyMethod()
{
return "hello";
}
}
Tôi muốn sử dụng dependency injection để loại bỏ sự cần thiết của "newing" lên dịch vụ của tôi nhưng tôi không thể tìm ra một cách để làm điều này. Tôi có thể làm cho nó hoạt động bằng cách sử dụng người nghèo DI, hoặc ít nhất tôi nghĩ rằng nó được gọi là "người nghèo".
như thế này:
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();
}
}
Nhưng tôi chỉ đơn giản là không thể có được quanh đầu tôi làm thế nào để sử dụng một container IoC để tiêm phụ thuộc của tôi, vì tôi không thể nhận được dịch vụ để chạy mà không có một constructor parameterless. Xin hãy tử tế, tôi không phải là một lập trình viên giàu kinh nghiệm và chỉ mới bắt đầu thử nghiệm tiêm phụ thuộc và làm cho nó hoạt động tốt trên các ứng dụng biểu mẫu cửa sổ của tôi với structuremap nhưng bị mắc kẹt trên cái này.