【发布时间】:2016-03-05 19:52:14
【问题描述】:
我正在用 C# 和 WCF 构建服务器。我有我的 Service 和 Contract 以及客户端应用程序使用的方法。但是整个逻辑被分离在不同的类中:BusinessLogic。我将在 BussinessLogic 中注入我需要的所有内容,例如存储库/数据库提供程序或存储在内存中的其他数据。我使用 穷人的依赖 来构建我的 BussinessLogic(这是我的作文根)。它是一个控制台应用程序,因此在 Main(string[] args) 方法中创建/解析了 BussinessLogic。
我的问题是 WCF 服务是使用无参数构造函数创建的,独立于服务器的其余部分。它们每次都被创建,当用作客户端时。
这是我的服务器的样子:
static void Main(string[] args)
{
ServiceHost host = new ServiceHost(typeof(ServiceLayer), new Uri("net.tcp://localhost:8005"));
host.Open();
Console.WriteLine("Running... Press key to stop");
Console.ReadKey();
}
我的服务:
[ServiceContract]
public interface IServiceContract
{
[OperationContract]
...
}
public class ServiceLayer : IServiceContract
{
IBusinessLogic _businessLogic;
public ServiceLayer(IBusinessLogic businessLogic)
{
_businessLogic = businessLogic;
}
// Here, I would like to use IBusinessLogic
...
}
我发现了如何使用 IoC here 做到这一点(我没有测试它),但我正在寻找一个具有 穷人依赖 的最佳解决方案,无需任何容器或工具,只有 C# 和 .NET。如果没有任何像 IoC 一样好的或接近它的解决方案,请发表评论。
【问题讨论】:
标签: c# .net wcf dependency-injection inversion-of-control