c# - 方法属性目标的目的是什么?

标签 c# attributes

在C#规范(17.2)中,它表示在指定属性时有多个属性目标。当您需要将属性应用于通常没有“真实”位置来指定属性的对象时,这很常见。例如,return 目标在平台 Invoke 中经常使用:

[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SomeWin32Method(); //Assume this is valid, has a DllImport, etc.

但是我注意到还有其他属性目标,比如method:

[method: DllImport("somelib.dll")]
static extern bool SomeWin32Method();

在什么情况下我需要显式定义 method 属性目标(比如解决歧义),还是只是为了完整性?

最佳答案

在这种情况下您不需要指定目标(位于方法的正上方,method 是默认目标),它只是为了完整性。就像你在给一个类添加成员时不需要指定private,但是很多人还是这么做了。在许多情况下,代码生成器喜欢对事物更加明确。

此外,我认为在这种情况下,额外的说明符会使事情变得更加清晰:

[method: SomeAttr]
[return: SomeOtherAttr]
int SomeMethod() { return 0; } 

关于c# - 方法属性目标的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15661301/

相关文章:

c# - 如何使用 Azure Devops API 中的头像图像 URL

session - 交响乐 1.4 : Storing an array in session with SetAttribute

delphi - Delphi 2009 RTL/VCL 中的属性语法?

c# - 根据 RadioButton 更改绑定(bind)

c# - 没有给定的参数对应于所需的形式参数 - .NET 错误

c# - gRPC 拦截 C# 中的调用

c# - 反序列化具有属性和值的元素

javascript - 如何用一个值函数设置多个属性?

java - 检测 JSP 中的下拉列表变化?

c# - 将 JSON 对象反序列化为动态类型但访问属性时出现 RuntimeBinderException?