На самом деле, мой коллега обнаружил, что можно получить доступ к Сервису WCF с хоста статическими методами, и вам даже не нужно иметь сервис в одноэлементном режиме.
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class MyWcfService : IMyWcfService
{
private static string messageFromHost;
public static void PassMessageFromHostToService(string message)
{
messageFromHost = message;
}
// Other methods fulfilling the service contract here...
}
Из хост-процесса вы можете сделать это для вызова метода:
MyWcfService.PassMessageFromHostToService("I'm a message from your host");
Я не уверен, считается ли это плохой практикой или это вызовет какие-то проблемы, которые мы не рассматривали, но, похоже, это работает для меня:)