ParameterInfo.IsLcid或ParameterInfo.IsRetval何时为true?

我在谷歌搜索时在Stack Overflow中找到了这个问题,但它已被删除。 所以我再次列出这个问题。

由于我在BCL中找不到LcidAttributeRetvalAttribute ,我猜C#没有提供对locale identifier参数和返回值参数的支持。

是吗?

谢谢大家。

它们与ParameterAttributes枚举相关联。 其中元数据用于方法的参数,只有编译器才能发出[modopt]。

我不知道实际上是这样做的编译器。 我对背景有一个不错的猜测,这些属性也用在IDL中。 这是COM和RPC中使用的接口描述语言。 使用此选项可确保.NET元数据还可以描述以IDL编写的声明类型,并且可以显示在类型库中。

这里描述了 [lcid]属性。 它实际上并没有描述用法,我自己从未使用过它。 不知道你为什么要用它。

这里描述了 [retval]属性。 在COM自动化方法声明中非常重要,它标记返回方法值的参数。 并且由像Tlbimp.exe这样的工具使用,它重写方法以使该参数成为返回值类型。