2010-09-04 77 views
0

我有下面的類WCF客戶端本地函數

[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?

回答

2

實現此目的的唯一方法是在客戶端上使用包含此類的相同程序集,而不是生成代理。所以把這個類放到一個單獨的程序集中,你將在客戶機和服務器之間共享。很明顯,如果你的客戶端不是.NET,這是不可能的。


從給定的組件重用類型發電機當你的代理類,而不是從Web服務的WSDL導入它們,並因此失去了getSum()(其中的方式應以開始,你可以使用/reference:<file path>開關爲了大寫字母遵循良好的編碼習慣):

svcutil.exe /reference:AssemblyThatContainsTheClassA.dll http://example.com/test.svc?wsdl 

,或者如果你正在使用Visual Studio中的Add Service Reference...對話框:

alt text

+0

我認爲這可能是一個解決方案。 – darpet 2010-09-04 17:21:10

+0

是的,這是一個解決方案。 – 2010-09-04 17:22:29

+0

如果我有一個來自程序集的類的實例,我不能與代理一起使用它。 – darpet 2010-09-04 17:31:21