none
WCF生成客户端代理的问题! RRS feed

  • 问题

  •  

    如果一个实体类(DataContract)被两个Service使用,客户端同时引用这两个Service的时候,实体类会出现在两个命名空间下,不能进行转换,代码如下

     

    Service端

     

    // 服务器段的唯一一个实体类

        [DataContract(Namespace="Kaitone.Common")]
        public class CommonEntity
        {
            [DataMember]
            public int IDA { get; set; }
            [DataMember]
            public string NameA { get; set; }
        }

     

    // 服务A 空参数,返回一个实体类的实例。

        [ServiceContract]

        public class MyServiceA : IMyServiceA
        {

            [OperationContract]

            public CommonEntity GetInstance()
            {
                CommonEntity result = new CommonEntity()
                {
                    IDA = 1, NameA="AAA"
                };
                return result;
            }

         }

    // 服务B 接受一个实体类的实例,返回一个实体类的实例的ID。

        [ServiceContract]

        public class MyServiceB : IMyServiceB
        {

            [OperationContract]
            public int GetID( CommonEntity resource )
            {
                return resource.IDA;
            }

          }

     

     

    Client端

    //这个代码无法通过编译

        class Program
        {
            static void Main( string[] args )
            {
                ServiceReferenceA.MyServiceAClient serviceAProxy = new ServiceReferenceA.MyServiceAClient();
                ServiceReferenceB.MyServiceBClient serviceBProxy = new ServiceReferenceB.MyServiceBClient();

               

      // A服务产生的实例temp和B服务接受的实例已经不在一个同一个命名空间下的实例。他们分别属于不同的类。

      ServiceReferenceA.CommonEntity temp = serviceAProxy.GetInstance();

               

      // 下面这行代码不能通过编译,极度郁闷。

      int id = serviceBProxy.GetID( temp );

            }
        }

     

     

     

     

     

     

    这种问题,各位大牛一般是怎么解决的

    2008年9月2日 15:45

答案

全部回复