si prega di verificare l'esempio di seguitoDue Interfaccia e una classe concreta in 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 ha il metodo di sottrazione() e Itest2 ha metodo add().
Entrambi sono implementati da una classe concreta chiamato G.
se voglio solo per esporre l'ITest tramite WCF, ho seguito endpoint config
<service name="GQS1" behaviorConfiguration="GQwcfBehaviour">
<endpoint address="DP2Svcs" binding="wsHttpContextBinding" bindingConfiguration="wsHttpEndpointBindingConfig" contract="GServices.itest">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</service>
quando ho eseguito questo servizio e controllare il WSDL , Vedo che i metodi che sono in itest2 appaiono anche in wsdl. in questo esempio, il metodo sottrazione() deve essere esposto. Ma anche il metodo add() è esposto.
Il mio requisito è che i metodi in ITest Interface debbano essere esposti solo. in questo caso, voglio esporre solo il metodo sottrarre() che è dichiarato in ITest. Ma entrambi della loro implementazione risiedono in una sola classe concreta "G". Cosa mi manca qui?
Edit: ho dato la mia contenuto del file Service.svc:
<%@ ServiceHost Language="C#" Debug="true" Service="GServices.G" %>
cosa è il tipo di ritorno del metodo esposto è '' G' o ITest' –
@Bob: Non è 'int'? – abatishchev
@abatishchev: ok, mi dispiace, ho copiato dal codice di sviluppo e ho cambiato il nome – amaz