我有以下课程
[DataContract]
public class A
{
private List<B> b= new List<B>();
public float getSum()
{
float sum= 0;
foreach (B b1 in b)
{
sum+= b1.sum;
}
return sum;
}
[DataMember]
public int B
{
get { return b; }
set { b = value; }
}
函数getSum()是特定于域的函数 我在IIS和wcf客户端托管了wcf服务。
在客户端我喜欢使用A类并调用函数getSum() 该功能需要本地呼叫,而不是远程。
我喜欢这样使用它:
A a = proxy.getA(101);
var1 = a.getSum();
A a1 = new A();
a1.setSomething
proxy.Insert(a1);
如何使用wcf执行此操作?
答案 0 :(得分:2)
实现此目的的唯一方法是在客户端上使用包含此类的相同程序集,而不是生成代理。因此,将此类放入一个单独的程序集中,您将在客户端和服务器之间共享。显然,如果您的客户端不是.NET,那么这是不可能的。
要重用给定程序集中的类型,您可以在生成代理类时使用/reference:<file path>
开关,而不是从Web服务的WSDL导入它们,从而丢失getSum()
(顺便说一句)应该以大写字母开头,以遵循良好的编码习惯):
svcutil.exe /reference:AssemblyThatContainsTheClassA.dll http://example.com/test.svc?wsdl
或者如果您在Visual Studio中使用Add Service Reference...
对话框: