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

Dan*_*ugg 5 .net c# alias class .net-assembly

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

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

除非另有建议,否则我只能假设Svcutil不支持别名(不过,在那个级别似乎最容易实现

我现在正在考虑将 Web 服务消费包装到它自己的项目中,即组装,并简单地从其他项目中引用它。我正在考虑这一点,因为可以添加一些(大概是程序集级别的)声明来公开名称与程序集中定义的名称不同的公共类型。

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

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

[assembly: AssemblyTypeAlias(
    Type = typeof(Foo.Bar.qux),
    Name = "Qux"
)]
Run Code Online (Sandbox Code Playgroud)

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

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

namespace Foo.Bar
{
    [Alias("Qux")]
    public partial class qux 
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

产生相同的效果。

虽然我只用我的理论示例介绍了类型名称,但允许对成员名称使用别名的解决方案将非常出色

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

Mar*_*ley 1

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