是否可以在 C# 中以相同类型自动转换服务结果?
Is it possible to cast service result automatically in the same type in C#?
事实:
- 我使用对 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
};
我希望有一个更优雅的解决方案。
不,即使所有字段和 class 名称在名称和类型上完全相同,也无法转换。
此外,您可以使用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
事实:
- 我使用对 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
};
我希望有一个更优雅的解决方案。
不,即使所有字段和 class 名称在名称和类型上完全相同,也无法转换。
此外,您可以使用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