我的项目包含服务和客户端应用。 我想使用WCF(命名管道)在它们之间交换数据。
我已添加:
namespace MyService
{
[ServiceContract]
public interface IPipeComm
{
[OperationContract]
string PipeCommProc(string value);
}
//----------
public class PipeComm : IPipeComm
{
public string PipeCommProc(string value)
{
return ("blah");
}
}
//----------
public partial class MyService : ServiceBase
{
ServiceHost PipeHost = new ServiceHost(typeof(PipeComm), new Uri[] { new Uri("net.pipe://localhost") });
...
一切正常。 但问题是在PipeCommProc里面我想使用我服务的所有数据和方法。 但由于PipeComm是一个不同的类,我无法访问它们。 有没有办法重构这段代码才能实现呢?
答案 0 :(得分:0)
ServiceHost每次都可以使用真实对象而不是类型进行构造。如果要访问服务类,最简单的方法可能是让服务类实现服务接口,并将现有实例用作WCF服务实例:
namespace MyService
{
[ServiceContract]
public interface IPipeComm
{
[OperationContract]
string PipeCommProc(string value);
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public partial class MyService : ServiceBase, IPipeComm
{
public string PipeCommProc(string value)
{
return ("blah");
}
private readonly ServiceHost PipeHost;
public MyService()
{
PipeHost = new ServiceHost(this, new Uri[] { new Uri("net.pipe://localhost") });
}
}