Как получить доступ к экземпляру службы WCF в текущем контексте? - PullRequest
12 голосов
/ 30 июня 2009

Если я выполняю в контексте определенного экземпляра службы и операции, как мне получить доступ к экземпляру службы, выполняемому в данный момент? Экземпляры службы не наследуются от какого-либо определенного общего базового класса или интерфейса, и единственный путь в существующий контекст, который я могу найти, это:

OperationContext.Current

но я не могу найти какие-либо свойства, которые ссылаются на сам экземпляр службы, чтобы я мог привести его к тому, что, как я знаю, должно быть, и выполнить операции с ним.

Не выясняя, почему я это делаю (это не имеет значения), пожалуйста, дайте мне знать, если есть какой-то способ найти ссылку, которую я ищу.

EDIT:

[ServiceContract]
public interface IInventory
{
    [OperationContract]
    List<DealInfo> ListDeals(DealQueryOptions options);
}

// This is the object I will need access to the current instance of
public class Inventory : ServiceBase<Inventory>, IInventory
{
    public List<DealInfo> ListDeals(DealQueryOptions options)
    {
        var obj = new Whatever(); // see below
    }
}

public class Whatever
{
    public Whatever()
    {
        // how do I get access to the service instance here?
        // assume that in this context we are not allowed to
        // pass the service instance to this class; this class
        // must automatically discover the instance itself.
    }
}

Ответы [ 2 ]

18 голосов
/ 30 июня 2009
var myService = OperationContext.Current.InstanceContext.GetServiceInstance();
0 голосов
/ 30 июня 2009

OperationContext.Current должен иметь свойство для этого IIRC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...