Два интерфейса и один конкретный класс в WCF

пожалуйста, проверьте приведенный ниже пример

namespace GServices
{
    [ServiceKnownType(typeof(SearchType))]
    [ServiceContract(SessionMode = SessionMode.Allowed)]
    public interface ITest
    {
        [OperationContract]
        int subtract(int x, int y);
    }

    [ServiceKnownType(typeof(SearchType))]
    [ServiceContract(SessionMode = SessionMode.Allowed)]
    public interface ITest2
    {
        [OperationContract]
        int add(int x, int y);

    }
    public class G : ITest2, ITest
    {
        public int add(int x, int y)
        {
            return x + y;
        }
        public int subtract(int x, int y)
        {
            return x + y;
        }
    }
}

В ITest есть метод вычитания (), а в Itest2 — метод добавления ().

Оба реализуются одним конкретным классом, называемым G.

Если я просто хочу предоставить ITest через WCF, у меня есть следующая конфигурация конечной точки

  <service name="GQS1" behaviorConfiguration="GQwcfBehaviour">
    <endpoint address="DP2Svcs" binding="wsHttpContextBinding" bindingConfiguration="wsHttpEndpointBindingConfig" contract="GServices.itest">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
  </service>

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

Мое требование состоит в том, чтобы иметь только открытые методы в интерфейсе ITest. в этом случае я хочу показать только метод вычитания (), который объявлен в ITest. Но обе их реализации находятся только в одном конкретном классе "G". Что мне здесь не хватает?

Изменить :Я предоставил содержимое файла Service.svc:

<%@ ServiceHost Language="C#" Debug="true" Service="GServices.G"  %>

enter image description here

6
задан amaz 5 July 2012 в 09:52
поделиться