代码之家  ›  专栏  ›  技术社区  ›  darpet

wcf客户端本地函数

  •  0
  • darpet  · 技术社区  · 14 年前

    [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进行此操作?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Darin Dimitrov    14 年前

    实现这一点的唯一方法是在客户机上使用包含此类的相同程序集,而不是生成代理。因此,将这个类放入一个单独的程序集中,您将在客户机和服务器之间共享这个程序集。显然,如果你的客户不是.NET,这是不可能的。


    要重用给定程序集中的类型,可以使用 /reference:<file path> 在生成代理类时切换,而不是从web服务的WSDL导入代理类,从而丢失 getSum() (顺便说一句,为了遵循良好的编码实践,应该以大写字母开头):

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

    Add Service Reference... Visual Studio中的对话框:

    alt text