是否可以在C#中以相同的类型自动转换服务结果?

时间:2015-02-26 10:38:24

标签: c# wcf casting converter

事实:

  • 我使用对WCF服务的服务引用
  • WCF服务的结果在结构和逻辑上与我的类型相同。

我项目中的类型:

namespace project.Data
{
    using System;

    public class TestPerson
    {
        public string Firstname { get; set; }

        public string Lastname { get; set; }

        public DateTime Birthday { get; set; }
    }
}

WCF服务的结果类型:

namespace externalServices.Data
{
    using System;

    public class TestPerson
    {
        public string Firstname { get; set; }

        public string Lastname { get; set; }

        public DateTime Birthday { get; set; }
    }
}

问题:

  • 可以自动将一种类型转换为其他类型吗?

此刻我的解决方案看起来像这样:

// service call 
var serviceClient = new ServiceClient();
externalServices.Data.TestPerson externalTestPerson = serviceClient.GetTestPerson();
project.Data.TestPerson myTestPerson = new TestPerson
{
    Birthday = externalTestPerson.Birthday,
    Firstname = externalTestPerson.Firstname,
    Lastname = externalTestPerson.Lastname
};

我希望有一个更优雅的解决方案。

1 个答案:

答案 0 :(得分:2)

不,即使所有字段和类名在名称和类型上完全相同,也无法进行强制转换。

此外,您可以使用AutoMapper之类的工具轻松复制。

Mapper.CreateMap<externalServices.Data.TestPerson, project.Data.TestPerson>();
Mapper.Map<externalServices.Data.TestPerson>(testPerson); // Copy all fields that have the same name and the same type