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

Kir*_*Yao 5 c# reflection

谷歌搜索时,我在堆栈溢出中发现了这个问题,但它已被删除。因此,我再次列出了这个问题。

由于我在BCL中找不到LcidAttributeRetvalAttribute,因此我猜C#没有提供对语言环境标识符参数和返回值参数的支持。

是吗

谢谢大家

Han*_*ant 5

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

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

[lcid]属性在此处描述。它实际上没有描述用法,我自己也从未使用过。不知道为什么要使用它。

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