У меня есть класс, который реализует плагин для существующего приложения.
Я также представил этот класс как службу WCF.Эта часть работает до сих пор.Проблема, с которой я сталкиваюсь, состоит в том, что приложение, к которому я подключаюсь, создает экземпляр моего класса, который я хочу использовать.
Есть ли способ передать существующий экземпляр класса на хост службы WCF, чтобы выставить в качестве конечной точки службы?
Я знаю (или могу понять), как сделать одноэлементный экземпляр службы WCF, но это все равно мне не поможет.Насколько я могу судить, экземпляр singleton будет по-прежнему создаваться и предоставляться WCF.
Я думал о других подходах, но я бы предпочел использовать этот, если он мне доступен.
Какой-то код.Это в конструкторе моего плагина:
// Setup the service host
var baseAddress = new Uri("http://localhost:8080/MyService/");
this.serviceHost = new ServiceHost(this.GetType(), baseAddress);
// Add our service endpoint
// Todo: Is there somewhere around here that I can provide an instance?
// Maybe in behavior somewhere?
this.serviceHost.AddServiceEndpoint(
typeof(ITheInterfaceMyClassDerivesFrom),
new BasicHttpBinding(),
""
);
// Add metadata exchange (so we see something when we go to that URL)
var serviceMetadataBehavior = this.serviceHost.Description.Behaviors
.Find<ServiceMetadataBehavior>();
if (serviceMetadataBehavior == null)
this.serviceHost.Description.Behaviors.Add(new ServiceMetadataBehavior());
this.serviceHost.AddServiceEndpoint(
typeof(IMetadataExchange),
new CustomBinding(new HttpTransportBindingElement()),
"MEX"
);
Это в методе плагина OnStartedUp (вызывается приложением, в которое я подключаюсь):
serviceHost.Open();