从程序集中公开不同的类型名称(别名)

这个问题与我之前未解决的问题有关 ,因为我仍在解决同样的问题; 这是一个不同的方法。

我目前正在C#.NET项目中使用第三方SOAP Web服务。 不幸的是,生成的客户端代理类和类成员的名称与我当前的约定不一致。

除非另有建议,否则我会假设Svcutil不支持别名( 但是,它似乎最容易在那个级别完成

我现在正在考虑将Web服务消耗包装到它自己的项目中,然后组装,并简单地引用其他项目中的内容。 我正在考虑这个问题,因为可以添加一些( 可能是程序集级别的 )声明来公开具有与程序集中定义的名称不同的名称的公共类型。

我的问题是; 是否可以公开不同于程序集中定义的类型/成员名称,基本上是别名?

例如,给定一个神奇的程序集属性:

[assembly: AssemblyTypeAlias( Type = typeof(Foo.Bar.qux), Name = "Qux" )] 

因此,引用此程序集的项目将访问Foo.Bar.qux作为Foo.Bar.Qux

当然,类似的类级别属性也会很棒,因为生成的代理是partial

 namespace Foo.Bar { [Alias("Qux")] public partial class qux { } } 

产生同样的效果。

虽然我只使用我的理论示例来覆盖类型名称,但是允许成员名称别名的解决方案将是非常壮观的

编辑 :我已经说过“别名”,其中更适用的术语是“重命名”,以隐藏原始名称; 最好是后者,但前者会起作用。

我已经将这个答案建议使用“服务引用”中的XmlType属性来解决其他问题 ,因为这个问题实际上是在询问别名程序集,无论它们是否来自服务。