favor consulte el siguiente ejemplointerfaz y una clase concreta en 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 método de resta() tiene y tiene Itest2 añadir método().
Ambos son ejecutados por una clase concreta llamada G.
Si sólo quiero exponer el ITest través de WCF, he siguiente configuración de punto final
<service name="GQS1" behaviorConfiguration="GQwcfBehaviour">
<endpoint address="DP2Svcs" binding="wsHttpContextBinding" bindingConfiguration="wsHttpEndpointBindingConfig" contract="GServices.itest">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</service>
cuando funciono este servicio y comprobar el WSDL , Puedo ver que los métodos que están en itest2 también aparecieron en wsdl. en este caso de ejemplo, el método de resta() solo debe estar expuesto. Pero el método add() también está expuesto.
Mi requisito es que los métodos en ITest Interface solo se expongan. en este caso, quiero exponer solo el método de resta() que se declara en ITest. Pero ambos de su implementación reside en Solo una clase concreta "G". ¿Que me estoy perdiendo aqui?
Editar: Yo he dado mi contenido del archivo Service.svc:
<%@ ServiceHost Language="C#" Debug="true" Service="GServices.G" %>
¿Cuál es el tipo de retorno de su método expuesto es que '' G 'o ITest' –
@Bob: ¿No es 'int'? – abatishchev
@abatishchev: bien, lo siento, copié el código de desarrollo y cambié el nombre – amaz