如果您使用标准 wsdl.exe 工具来创建代理和支持类,那么我相信它会将代码生成为部分类。如果这是您的情况,那么您可以将自己的隐式转换运算符插入其中一种类型。例如,假设您在“MyService\foo.cs”文件中定义了 MyService.foo 类,如下所示:
namespace MyService
{
public partial class foo
{
public string PropertyA { get; set; }
public string PropertyB { get; set; }
public string PropertyC { get; set; }
// ...
}
}
您在“MyFramework\foo.cs”文件中定义了 MyFramework.foo 类,如下所示:
namespace MyFramework
{
public class foo
{
public string PropertyA { get; set; }
public string PropertyB { get; set; }
public string PropertyC { get; set; }
// ...
}
}
然后你可以创建一个单独的文件,比如“MyService\foo.conversion.cs”,如下所示:
namespace MyService
{
partial class foo
{
public static implicit operator MyFramework.foo(foo input)
{
return new MyFramework.foo
{
PropertyA = input.PropertyA,
PropertyB = input.PropertyB,
PropertyC = input.PropertyC,
// ...
};
}
}
}
这将允许您使用 MyService.foo 对象编写大部分代码,就好像它是 MyFramework.foo 对象一样。以下代码使用上述设置编译:
MyService.foo x = new MyService.foo();
MyFramework.foo y = x;