这个问题与previous, unanswered question of mine有关,因为我仍在解决同样的问题;这是一种不同的方法。
我目前正在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
{
}
}
产生同样的效果。
虽然我只用我的理论范例覆盖了类型名称,但是允许成员名称别名的解决方案将壮观。
编辑:我说过“别名”,其中更适用的术语是“重命名”,以隐藏原始名称;最好是后者,但前者会奏效。