如何让 WCF 生成IEnumerable
实际对象的列表或代理?我在自托管应用程序中执行此操作。
这是我所拥有的:
public interface IRemoteControlGroup {
List<IRemoteControl> GetInstances();
}
public class RemoteControlGroupImpl : IRemoteControlGroup {
public List<IRemoteControl> GetInstances()
{
System.Console.Error.WriteLine("Called GetInstances()");
List<IRemoteControl> list = new List<IRemoteControl>();
// implementation detail: get this list of IRemoteControl objects
return list;
}
}
public interface IRemoteControl {
void Stop();
void Start();
void GetPID();
}
public class RemoteControlImpl : IRemoteControl {
// actual implementation
}
我希望 WCF:
- 提供
RemoteControlGroupImpl
由合同定义的服务IRemoteControlGroup
。 - 给我一个
List<IRemoteControl>
何时IRemoteControlGroup.GetInstances()
被调用(在客户端上),其中列表的元素是实现的代理IRemoteControl
(通过调用主机的实际IRemoteControl
对象)。
我不希望 WCF 将实际RemoteControlImpl
对象推过电线;我只是希望它推动实现IRemoteControl
. RemoteControlImpl
对象实际上包含本地系统的句柄(窗口句柄,因为我们的应用程序只公开一个 GUI 界面),因此不可序列化。返回的元素数量GetInstance()
可能会有所不同。
我找到了这篇文章,这听起来像是我想要的。有点儿。但它并没有告诉我如何在代码中做到这一点;只是在配置中。它也不能完全描述我想要什么。服务的入口点提供代理;但我希望我的服务的入口点提供代理列表。