如果我有这样的服务定义/实现:
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);
然后,在创建绑定并添加metadatabehavior后,我可以打开主机。根据客户的请求,将调用UpdatePerson(aPersonIdentifier)。
我想和UpdatePerson的数据库交谈。 a previous question of mine的答案建议我应该使用依赖注入来处理这类事情。
问题是我从不创建UpdateService类的实例。那么如何注入依赖?你会如何解决这个问题?
谢谢,问候,Miel。
答案 0 :(得分:2)
查看IInstanceProvider界面。基本上你需要实现这个接口,并且在方法GetInstance中自己实例化WCF类,提供任何依赖。
答案 1 :(得分:2)
基本上,您需要基于您的IOC容器和使用您编写的实例提供程序的IServiceBehaviour实现IInstanceProvider。这将使IOC容器能够为您构建对象层次结构。
答案 2 :(得分:0)
如果您计划注入依赖项,则应该考虑使用IoC容器。例如。温莎。
如果您使用Windsor,则会有一个WCF集成工具,它会自动将所有依赖项注入您的服务。请查看here。