hãy kiểm tra các ví dụ dưới đâyHai giao diện và một lớp bê tông trong 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 có phương pháp trừ() và Itest2 có thêm phương pháp().
Cả hai đều được thực hiện bởi một lớp bê tông được gọi là G.
Nếu tôi chỉ muốn để lộ những ITest qua WCF, tôi đã sau endpoint cấu hình
<service name="GQS1" behaviorConfiguration="GQwcfBehaviour">
<endpoint address="DP2Svcs" binding="wsHttpContextBinding" bindingConfiguration="wsHttpEndpointBindingConfig" contract="GServices.itest">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</service>
khi tôi chạy dịch vụ này và kiểm tra wsdl , Tôi có thể thấy rằng các phương thức trong itest2 cũng xuất hiện trong wsdl. trong trường hợp ví dụ này, phương thức trừ() chỉ nên được hiển thị. Nhưng phương thức add() cũng được tiếp xúc.
Yêu cầu của tôi là phải có phương pháp trong Giao diện thông minh nhất chỉ nên hiển thị. trong trường hợp này, tôi muốn chỉ hiển thị phương thức trừ() được khai báo trong ITEST. Nhưng cả hai việc triển khai của họ đều nằm trong Chỉ một lớp cụ thể "G". Tôi đang thiếu gì ở đây?
Edit: tôi đã đưa nội dung tập tin Service.svc tôi:
<%@ ServiceHost Language="C#" Debug="true" Service="GServices.G" %>
Loại trả về của phương pháp tiếp xúc của bạn là 'G' hoặc' ITest' –
@Bob: Không phải là 'int'? – abatishchev
@abatishchev: ok, xin lỗi, tôi đã sao chép từ mã phát triển và đổi tên – amaz