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

2024-02-09

这个问题与一个相关我之前未回答的问题 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:我说过“别名”,更适用的术语是“重命名”,以隐藏原始名称;最好是后者,但前者也可以。


我已将建议在服务参考中使用 XmlType 属性的答案移至您的其他问题 https://stackoverflow.com/q/22097706/409279,因为这实际上是在询问别名程序集,无论它们是否来自服务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 切换到特定片段会产生奇怪的 java.lang.NullPointerException

    这是我目前面临的问题 我最近从带有 ADT 插件的 Eclipse 切换到 Android Studio 并且 Android Studio 出现了一个我在 Eclipse 上从未遇到过的错误 当我切换到名为 LineFragment 的特
  • 从特定目录运行 Cronjob

    我创建了一个用于生成 RSS 提要的 php 脚本 该脚本最终将通过 Cronjob 运行 所有 php 文件和生成的 RSS xml 将位于网站的子文件夹中 如果我在本地开发计算机上的同一目录中使用终端或浏览器 则 php 脚本可以在本地
  • 以编程方式确定图像的人类可读颜色(例如红色、绿色等)

    我正在尝试编写一个脚本 该脚本将以编程方式运行图像并告诉我它的原色 目前该脚本获取每个像素的 RGB 值 将它们与预定义的规则进行比较 并尝试计算每种颜色的像素数 我的问题是剧本有点碰运气 有谁知道更好的方法 也许使用更容易翻译成英语的不同
  • 将 IANA/Olson 时区数据库映射到缩写(如 EST、PST 等)

    我需要将 IANA Olson 时区 ID 映射到缩写 例如 EST PST 等 我知道这不是一对一的映射 例如 对于 EST 有相当多的 IANA 时区 我可以使用某种数据库 映射来实现此目的吗 PS JavaScript 解决方案是更好
  • ExtJs 如何滚动到网格底部?

    我正在使用 extjs 制作一个基于网络的日志查看器 我希望将新的日志行添加到我的 gridview 的底部 因为它不需要排序将其移动到网格的顶部 加上我的同事更喜欢它 从而节省了 cpu 我的问题是 理想情况下 添加新行后网格会滚动到底部
  • React Router (Dom) v4 在输入回车键时重定向到不同的路由

    当用户在输入字段中按 Enter 时 我尝试重定向到新路线 我有一个标题和搜索组件 我想在每个页面上呈现它 我发现了使用重定向组件 withRouter 组件 使用上下文以及可能将历史对象传递到我的搜索组件 输入字段所在的位置 的不同用例
  • 替换字符串中的字符

    我正在尝试创建一个字符串 用 替换所有空格 但我不知道具体该怎么做 有人可以帮忙吗 String phrase new String This is a String test 假设它是Java 你可以使用字符串替换 http downlo
  • 如何禁用 MFC 中的最大化按钮?

    如何禁用 SDI 应用程序中的最大化按钮 功能 为了完整性 int CMainFrame OnCreate LPCREATESTRUCT lpCreateStruct ModifyStyle WS MAXIMIZEBOX 0
  • 使用数据库中的配置初始化应用程序组件

    我正在构建一个 Yii2 应用程序 通过swiftmailer 扩展 https github com yiisoft yii2 swiftmailer 我将电子邮件设置 smtp ssl 用户名等 存储在数据库表中 以便能够使用适当的视图
  • 同一服务器上的两个 Laravel 项目导致冲突

    我在同一台服务器上有两个 Laravel 5 1 项目 在单个项目上操作不会给我带来任何麻烦 但是如果我在两个浏览器选项卡上打开两个项目并在它们之间交替 我会收到 服务器遇到内部错误或配置错误 无法完成您的请求 进行了研究 发现服务器正在记
  • ORM 和逻辑删除

    任何可用的 ORM 是否支持使用位字段来表示行删除 更多信息 使用 C 工作 我需要删除这种方式来支持将远程数据库更改同步到中央数据库 我正在寻找一种可能的 ORM 但也对解决该问题的方法感兴趣 因此 如果有人知道任何语言 环境中的任何 O
  • 类型错误:io.connect 不是一个函数

    我正在遵循使用 Node js 和 socket io 的简单多人游戏的教程 http rawkes com articles creating a real time multiplayer game with websockets an
  • 如何运行包生成的jar(可能与lib下的其他jar一起运行)?

    我怎样才能跑 jarsbt生成的文件package 我创建了一个非常简单的例子 scala source package org pack class ScalaParser files Array String def doAll pri
  • 为什么有四个 Mono C# 编译器?

    这一页 http www mono project com CSharp解释了四种不同的 mono 编译器 mcs gmcs smcs dmcs 对我来说 拥有四个 C 编译器有点奇怪 通常 新版本的编译器会保持向后兼容性 我认为这是因为运
  • 需要了解 Git/Gerrit 命令(获取和推送)

    我正在遵循我们 IT 部门的一个示例 我想了解这个命令到底在做什么 git fetch origin refs changes refs remotes origin changes 为了提供一些参考框架 这是持续集成 CI 工具的一部分
  • ASP 中的“~/”解析为什么:当前文件夹还是网站的根目录?

    在文件路径中使用 是否解析为当前文件夹或网站的根目录 我有这样的文件结构 gt Folder gt Page1 Aspx gt App Themes gt Theme1 gt Images gt StyleSheet css gt Incl
  • 根据同时在另一个字段中输入的内容自动填充字段

    我试图弄清楚如何根据使用 javascript 在另一个输入字段中输入的内容自动填充输入值 这是我的代码
  • 是否有使用 Kohana 进行用户注册和登录身份验证的示例项目?

    我想制作一个网络应用程序 平台 它可以做非常简单的事情 用户可以注册 获得帐户 然后登录到平台 我已经安装了 Kohana 如果有一个轻量级的演示项目可以利用这些东西来看看它是如何完成的 那就太酷了 有没有好的可用的 Gallery3 测试
  • 使用带有注入承诺的 ngRoute 'resolve' 参数

    我已经配置了resolve返回 Promise 的多个路由的参数 以便延迟控制器的实例化 直到 Promise 得到解决 目前我使用函数符号 而不是指定要注入的字符串 例如 when article id templateUrl app a
  • 从程序集中公开不同的类型名称(别名)

    这个问题与一个相关我之前未回答的问题 https stackoverflow com q 22097706 409279 因为我仍在解决同样的问题 但这是一种不同的方法 我目前正在 C NET 项目中使用第三方 SOAP Web 服务 不幸