пожалуйста, проверьте приведенный ниже пример
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" %>