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

本文关键字:别名 类型 程序集 | 更新日期: 2023-09-27 17:50:13

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

我目前正在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 
    {
    }
}

产生相同的效果。

虽然我只在理论示例中讨论了类型名称,但允许成员名称别名的解决方案将是壮观的

Edit:我说的是"别名",更适用的术语是"重命名",以隐藏原始名称;

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

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