Нашел ответ, который работает.
Мой конструктор главного окна WPF выглядит так:
public partial class Main : Window
{
private ObservableCollection<GridNodeProxy> _gridNodes = new ObservableCollection<GridNodeProxy>();
private static Random _random = new Random();
public MasterNode MasterNode { get; set; }
private ServiceHost _serviceHost;
public Main()
{
this.MasterNode = new MasterNode();
MasterNode.OnMessage += MasterNodeMessage;
_serviceHost = new ServiceHost(MasterNode);
_serviceHost.Open();
InitializeComponent();
}
Я также изменил класс обслуживания, добавив атрибут:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class MasterNode : ServiceBase, IMasterNode
Объект serviceHost затем использует экземпляр, который я явно создал. Обратите внимание, что параметр, передаваемый конструктору ServiceHost, является экземпляром MasterNode, а не ссылкой на тип.
Надеюсь, это поможет кому-то еще!