【问题标题】:How to inject an object into a WCF service如何将对象注入 WCF 服务
【发布时间】:2009-05-19 17:14:22
【问题描述】:

如果我有这样的服务定义/实现:

using System;
using System.ServiceModel;

namespace aspace.service
{
  [ServiceContract(Namespace = "http://aspace.service")]
  public interface IUpdate
  {
    [OperationContract]
    ConfirmationMessage UpdatePerson(string PersonIdentifier);
  }
}

public class UpdateService : IUpdate
{
    public ConfirmationMessage UpdatePerson(string PersonIdentifier)
    {
        // some implementation here
    }
}

我可以像这样创建一个服务主机:

ServiceHost host = new ServiceHost(typeof(UpdateService), someEndpointAddress);

然后,在创建绑定并添加元数据行为之后,我可以打开主机。它将根据客户的请求调用 UpdatePerson(aPersonIdentifier)。

我想与 UpdatePerson 的数据库交谈。 a previous question of mine 的答案建议我应该对这类事情使用依赖注入。

问题是我从未创建类 UpdateService 的实例。那么如何注入依赖项呢?你会如何解决这个问题?

谢谢,问候,米尔。

【问题讨论】:

    标签: c# wcf dependency-injection


    【解决方案1】:

    看看IInstanceProvider 接口。基本上你需要实现这个接口,并在方法GetInstance 中自己实例化 WCF 类,提供任何依赖项。

    【讨论】:

      【解决方案2】:

      基本上,您需要基于您的 IOC 容器和使用您编写的实例提供程序的 IServiceBehaviour 实现一个 IInstanceProvider。这将使 IOC 容器能够为您构建对象层次结构。

      有一个example implementation here

      【讨论】:

      • +1 因为该示例帮助我理解了已接受答案中链接背后的代码
      【解决方案3】:

      如果您打算注入依赖项,则绝对应该考虑使用 IoC 容器。例如。温莎。

      如果您使用 Windsor,则有一个 WCF 集成工具,它会自动将所有依赖项注入您的服务。看看here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-13
        • 1970-01-01
        相关资源
        最近更新 更多