Подтвердить что ты не робот

Как получить доступ к экземпляру службы WCF в текущем контексте?

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

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.
    }
}
4b9b3361

Ответ 1

var myService = OperationContext.Current.InstanceContext.GetServiceInstance();

Ответ 2

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