c中的属性return是什么意思

本文关键字:是什么 意思 return 属性 | 更新日期: 2023-09-27 18:00:22

我有一段这样的代码:

[return: XmlElement("return", Namespace = "", IsNullable = false, DataType = "base64Binary")]
public byte[] WORK([XmlElement(Namespace = "http://www.example.com/xml/someapi", DataType = "string", Form = XmlSchemaForm.Qualified)] string guid, [XmlElement(Namespace = "http://www.example.com/xml/someapi", DataType = "base64Binary", Form = XmlSchemaForm.Qualified)] byte[] data) {
   // some work
}

属性return:是什么意思?

c中的属性return是什么意思

我以前从未遇到过它,但它似乎被描述为"解除属性目标"中的属性目标

这种情况在封送时经常出现。解决对于模糊性,C#为每种类型都有一组默认目标声明,可以通过显式指定来重写属性目标。C#

// default: applies to method 
[SomeAttr] 
int Method1() { return 0; } 
// applies to method 
[method: SomeAttr] 
int Method2() { return 0; } 
// applies to return value 
[return: SomeAttr] 
int Method3() { return 0; } 

请注意,这与SomeAttr的目标无关被定义为有效;也就是说,即使SomeAttr被定义为仅适用于返回值,返回目标仍然必须指定。换句话说,编译器不会使用AttributeUsage用于解决不明确属性目标的信息。了解更多信息有关信息,请参阅AttributeUsage(C#编程指南)。的语法属性目标如下:[目标:属性列表]

这是一个属性目标
它是在修饰属性,使其适用于方法的返回,而不是它所使用的方法

更常见的用途是[assembly:...]属性目标,通常使用如下:

[assembly: InternalsVisibleTo("MyProject.UnitTests")]

详细说明

这些是装饰属性的属性目标:

属性的目标是该属性所应用的实体。

进一步解释:

例如,属性可以应用于类、特定方法或整个程序集。默认情况下,属性应用于它后面的元素。但您也可以显式标识,例如,属性是应用于方法、参数还是返回值。

该文件列出了可能的目标值。

例如,System.Convert.ChangeType方法的注释如下:

[return: NotNullIfNotNull(nameof(value))]
public static object? ChangeType(object? value, TypeCode typeCode)
{
    return ChangeType(value, typeCode, CultureInfo.CurrentCulture);
}