Как мне предоставить конкретный экземпляр класса, чтобы выставить его в качестве моей службы WCF - PullRequest
2 голосов
/ 13 августа 2010

У меня есть класс, который реализует плагин для существующего приложения.

Я также представил этот класс как службу 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();

1 Ответ

6 голосов
/ 13 августа 2010

Вам нужно использовать другой конструктор для ServiceHost, если вы хотите сделать это - посмотрите документы MSDN по http://msdn.microsoft.com/en-us/library/ms585487.aspx

public ServiceHost(
    Object singletonInstance,
    params Uri[] baseAddresses
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...