这个问题与一个相关我之前未回答的问题 https://stackoverflow.com/q/22097706/409279,因为我仍在解决同样的问题;但这是一种不同的方法。
我目前正在 C# .NET 项目中使用第三方 SOAP Web 服务。不幸的是,生成的客户端代理类和类成员的名称与我当前的约定不一致。
除非另有建议,否则我只能假设Svcutil http://msdn.microsoft.com/en-us/library/vstudio/aa347733%28v=vs.100%29.aspx不支持别名(不过,在那个水平上这似乎是最容易完成的)
我现在正在考虑将 Web 服务消耗包装到它自己的项目中,从而进行组装,并简单地从其他项目中引用它。我正在考虑这一点,因为可以添加一些(大概是汇编级的) 声明以与程序集中定义的名称不同的名称公开公共类型。
我的问题是;是否可以公开与程序集中定义的类型/成员名称不同的类型/成员名称,本质上是对它们进行别名?
例如,给定一个神奇的程序集属性:
[assembly: AssemblyTypeAlias(
Type = typeof(Foo.Bar.qux),
Name = "Qux"
)]
因此,引用该程序集的项目将访问Foo.Bar.qux
as Foo.Bar.Qux
.
当然,类似的类级属性也很棒,因为生成的代理是partial
:
namespace Foo.Bar
{
[Alias("Qux")]
public partial class qux
{
}
}
产生同样的效果。
虽然我只用理论示例介绍了类型名称,但允许使用成员名称别名的解决方案是壮观的.
Edit:我说过“别名”,更适用的术语是“重命名”,以隐藏原始名称;最好是后者,但前者也可以。