Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将序列化的WCF模型转换回本机模型_C#_Wcf_Serialization_Wcf Data Services - Fatal编程技术网

C# 将序列化的WCF模型转换回本机模型

C# 将序列化的WCF模型转换回本机模型,c#,wcf,serialization,wcf-data-services,C#,Wcf,Serialization,Wcf Data Services,我有一个包含3个项目的解决方案: 客户 模型 WCF服务 Models项目具有引用我的数据库表的POCO类,如下所示: [DataContract] [Table("users")] public class User { public User() { } [DataMember] [Key, Column("userid", TypeName = "int")] p

我有一个包含3个项目的解决方案:

  • 客户
  • 模型
  • WCF服务
Models项目具有引用我的数据库表的POCO类,如下所示:

[DataContract]
    [Table("users")]
    public class User
    {
        public User()
        {

        }

        [DataMember]
        [Key, Column("userid", TypeName = "int")]
        public Int32 UserId { get; set; }

        [DataMember]
        [Column("username", TypeName = "varchar")]
        public String UserName { get; set; }
public User ValidateUser(string organization, string userName, string password)
        {
            Model.Poco.User user = new Model.Poco.User();
            user.UserId = 1;
            user.BoardMember = true;
            user.Email = "test@yahoo.com";
            user.FirstTimeLogin = false;
            user.IsActive = true;
            user.Notes = "notes";
            user.Password = "xxxxxx";
            user.UserName = "user1";
            return user;
        }
private void button1_Click(object sender, EventArgs e)
        {
            WCFService.Service1Client client = new WCFService.Service1Client();
            var user = client.ValidateUser("test", "test", "test");
        }
WCF服务项目引用了模型,以便从如下方法返回模型:

[DataContract]
    [Table("users")]
    public class User
    {
        public User()
        {

        }

        [DataMember]
        [Key, Column("userid", TypeName = "int")]
        public Int32 UserId { get; set; }

        [DataMember]
        [Column("username", TypeName = "varchar")]
        public String UserName { get; set; }
public User ValidateUser(string organization, string userName, string password)
        {
            Model.Poco.User user = new Model.Poco.User();
            user.UserId = 1;
            user.BoardMember = true;
            user.Email = "test@yahoo.com";
            user.FirstTimeLogin = false;
            user.IsActive = true;
            user.Notes = "notes";
            user.Password = "xxxxxx";
            user.UserName = "user1";
            return user;
        }
private void button1_Click(object sender, EventArgs e)
        {
            WCFService.Service1Client client = new WCFService.Service1Client();
            var user = client.ValidateUser("test", "test", "test");
        }
现在,我的客户端有一个对WCF服务的服务引用,调用该服务的代码如下所示:

[DataContract]
    [Table("users")]
    public class User
    {
        public User()
        {

        }

        [DataMember]
        [Key, Column("userid", TypeName = "int")]
        public Int32 UserId { get; set; }

        [DataMember]
        [Column("username", TypeName = "varchar")]
        public String UserName { get; set; }
public User ValidateUser(string organization, string userName, string password)
        {
            Model.Poco.User user = new Model.Poco.User();
            user.UserId = 1;
            user.BoardMember = true;
            user.Email = "test@yahoo.com";
            user.FirstTimeLogin = false;
            user.IsActive = true;
            user.Notes = "notes";
            user.Password = "xxxxxx";
            user.UserName = "user1";
            return user;
        }
private void button1_Click(object sender, EventArgs e)
        {
            WCFService.Service1Client client = new WCFService.Service1Client();
            var user = client.ValidateUser("test", "test", "test");
        }
它是这样工作的,如果我导航“user”变量,它拥有WCF服务中的所有对象属性,但我想做的是:

Model.Poco.User user = client.ValidateUser("test", "test", "test");
但是如果我这样做我会得到一个错误,无法从:WCFService.User转换为Model.Poco.User。

关于如何将序列化对象转换为本机对象的任何线索注意,我在客户端和WCF服务上使用相同的对象,因为我在客户端和WCF服务上都引用了*Models项目*


感谢您的帮助

在客户端项目中生成服务引用时,请选中在引用的程序集中重用类型的选项。否则,该工具将基于WSDL生成新类,作为服务引用的一部分

您是否尝试过让方法返回
Model.Poco.User
而不是
User
?返回的是Model.Poco.User。