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

标签 c# .net class alias .net-assembly

此问题与 previous, unanswered question of mine 有关,因为我还在解决同样的问题;不过,这是一种不同的方法。

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

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

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

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

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

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

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

当然,类似的类级属性也很棒,因为生成的代理是部分:

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

产生相同的效果。

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

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

最佳答案

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

关于c# - 从程序集中公开不同的类型名称(别名),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22408104/

相关文章:

.net - 错误记录类中最好的异常处理策略是什么?

c# - 无法使用 System.Data.OleDb.OleDbConnection 打开 Excel 文件

c++ - 复制构造函数和 getter 错误(增变函数)

php - 如何仅加载一次函数并将返回值存储在变量中?

c# - (ViewModel)DataContext 返回 null

c# - ASP.net MVC 2.0 使用相同的表单进行添加和编辑

c# - 了解 C# 接口(interface)

.net - 您如何组织资源文件?

c# - 如何在 C# 上将 MySQL 查询转换为 JSON

python - 像 swift 一样在 python 中进行类扩展?