将对象参数传递给WCF

时间:2011-12-26 11:42:37

标签: wcf object

DataContract为: -

namespace AssemblyA
{
    public class Person                                 
    {     
        public string FirstName {get;set;}
        public string LastName {get;set;}                             
    }                                                              
}

服务如下: -

[ServiceContract]            
public interface IServer      
{ 
    [OperationContract]  
    Person GetPerson(); 

    [OperationContract] 
    Person UpdatePerson( Person person )             
}

客户方: -

using AssemblyA; 

namespace AssemblyB 
{
    class Program     
    {         
        static void Main(string[] args)         
        {             
            IServer server = factory.CreateChannel(); 
            Person person = server.GetPerson(); 
            person.FirstName = "Kilroy";       
            person.LastName = "";
            Person p = server.UpdatePerson(person);
            String str = p.LastName; 
        }    
    }
} 

我有两个问题: -

  1. 我将LastName属性设置为空白并调用GetPerson方法。在那之后,当我检查LastName属性时,它将变为空白而不是空白。

  2. 第二个问题是如果我在Person类中进行如下更改: -

    public class Person                                             
    {                                                 
        String _FirstName;   
        String _LastName;                                 
        public string FirstName 
        {
            get{}
            set
            { 
                _FirstName=value;
                _LastName="XYZ";
            }
        }
    
        public string LastName { get;set; }  
    }  
    
  3. 在此之后,我将我的客户更改为: -

    IServer server = factory.CreateChannel(); 
    Person person = server.GetPerson(); 
    person.FirstName = "Kilroy";       
    person.LastName = "abc";
    Person p = server.UpdatePerson(person);
    String str = p.LastName; 
    

    然后在str中显示“XYZ”而不是“abc”。但我期待它的“abc”。

    请告知我必须在我的项目中使用它。

1 个答案:

答案 0 :(得分:0)

至于你的第二个问题,你有一个属性LastName和一个字段_LastName,它们没有关系。在您的客户端代码中,设置FirstName,将_LastName 字段设置为“abc”,然后设置LastName 属性

现在你有Person类,字段_LastName设置为“XYZ”,属性LastName设置为“abc”。