如何使用相同的属性(类型,数字,..)转换2个具有不同名称的类

时间:2010-12-30 14:55:01

标签: c#

大家好 我在目录管理员工作。

我有2个班级:

第一个:从XMl文件的xsd.exe生成器获取 第二名:来自WebService代理类的gor

这两个类是相同的(相同的属性),唯一的是他们被2个不同的团队开发: 例如:

public partial class CatalogPackageAMSApp_Data {

    private string appField;

    private byte nameField;

    private string valueField;
}

public partial class AppData {

    private string appField;

    private string nameField;

    private string valueField;
}

我怎样才能投射,影响......彼此的这两个类。

祝你好运

我可以进一步解释

5 个答案:

答案 0 :(得分:7)

他们都是部分类。只需将具有相应属性的相同接口连接到每个接口,然后它们都可以转换为接口类型。

你不能在他们之间施放,因为他们彼此没有关系。基类或接口必须具有通用性。

答案 1 :(得分:2)

你基本上不能 - 它们不是同一个类,CatalogPackageAMSApp_Data的实例不是AppData的实例,反之亦然。

可以做的是编写方法/构造函数来在两个 - 和可能的实现转换运算符之间进行转换。我个人更喜欢方法方法,因为当你进行转换时它会更明显。

你真的同时拥有这两个课程吗?如果你真的需要两个类,他们是否可以使用composition来包含第三个包含实际数据的公共类的实例?

答案 2 :(得分:0)

如果它们完全相同,是否有任何理由你不能改变一个继承另一个?然后在类型之间进行转换很简单由于两者都是自动生成的,我会修改自动生成频率较低的类。

答案 3 :(得分:0)

我不确定这是否适用于您的情况,但我相信Web服务代理生成器(如果您使用WCF则为svcutil.exe,否则为wsdl.exe)能够在生成时重用现有类型网络服务代理。

http://blogs.msdn.com/b/lifenglu/archive/2007/05/09/type-sharing-in-wcf-service-reference.aspx

有关如何生成共享类型的代理的其他链接:

svcutil.exe redundant proxy classes

http://msdn.microsoft.com/en-us/library/aa347733.aspx

如果您使用的是.NET 2.0:

wsdl.exe /sharetypes

http://msdn.microsoft.com/en-us/library/7h3ystb6%28v=vs.80%29.aspx

答案 4 :(得分:0)

我会说两者之间的通用接口是正确的解决方案。如果这不是一个选项,您可以使用Automapper(http://automapper.codeplex.com/)来为您处理映射。