传递对象参数WCF
问题描述:
DataContract为: -传递对象参数WCF
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;
}
}
}
我有两个问题: -
我将LastName属性设置为空白并调用GetPerson方法。之后,当我检查姓氏属性时,它将作为没有而不是空白。
-
第二个问题是,如果我在Person类做如下改变: -
public class Person { String _FirstName; String _LastName; public string FirstName { get{} set { _FirstName=value; _LastName="XYZ"; } } public string LastName { get;set; } }
这之后,我改变了我的客户是: -
IServer server = factory.CreateChannel();
Person person = server.GetPerson();
person.FirstName = "Kilroy";
person.LastName = "abc";
Person p = server.UpdatePerson(person);
String str = p.LastName;
然后在海峡就说明“XYZ”而不是“abc”。但我期待从它“abc”。
请指教,因为我必须在我的项目中使用它。
答
至于你的第二个问题,你有一个属性LastName和一个字段_LastName,它们是不相关的。在您的客户端代码中,您设置FirstName,这将_LastName 字段设置为“abc”,然后您设置姓氏属性。
现在您已将Person类的字段_LastName设置为“XYZ”,将属性LastName设置为“abc”。
是完整的代码? Person类的DataContract属性在哪里? – diggingforfire 2011-12-26 11:56:58
你真的需要在评论中发表评论,而不是在你的问题细节中。它真的让你的问题变得模糊不清,并且使未来任何人都很难找出问题和解决方案。 – jlafay 2011-12-26 16:49:04