ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-07-08 21:08:27  阅读:530  来源: 互联网

标签:c net alias net-assembly class


这个问题与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.

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

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

产生同样的效果.

虽然我只用我的理论范例覆盖了类型名称,但是允许成员名称别名的解决方案将是非常壮观的.

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

解决方法:

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

标签:c,net,alias,net-assembly,class
来源: https://codeday.me/bug/20190708/1405692.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有