【发布时间】:2012-07-31 06:48:39
【问题描述】:
我在 Google 搜索时在 Stack Overflow 中发现了这个问题,但它已被删除。所以我再次列出这个问题。
由于我在 BCL 中找不到 LcidAttribute 或 RetvalAttribute,我猜 C# 没有提供对语言环境标识符参数和返回值参数的支持。
是吗?
谢谢大家。
【问题讨论】:
标签: c# reflection
我在 Google 搜索时在 Stack Overflow 中发现了这个问题,但它已被删除。所以我再次列出这个问题。
由于我在 BCL 中找不到 LcidAttribute 或 RetvalAttribute,我猜 C# 没有提供对语言环境标识符参数和返回值参数的支持。
是吗?
谢谢大家。
【问题讨论】:
标签: c# reflection
它们与ParameterAttributes enumeration 相关联。它在元数据中用于方法的参数,只有编译器可以发出 [modopt]。
我不知道有哪个编译器能真正做到这一点。我对背景有一个不错的猜测,这些属性也用于 IDL。这是一种用于 COM 和 RPC 的接口描述语言。拥有此选项可确保 .NET 元数据也可以描述以 IDL 编写并可以出现在类型库中的声明类型。
[lcid] 属性是described here。它实际上并没有描述用法,我自己也从未使用过。不知道为什么要使用它。
[retval] 属性是described here。在 COM 自动化方法声明中非常重要,它标记了返回方法值的参数。并被 Tlbimp.exe 之类的工具使用,它会重写方法以使该参数成为返回值类型。
【讨论】: