-
Notifications
You must be signed in to change notification settings - Fork 1.5k
/
ReturnValueNameAttribute.xml
153 lines (140 loc) · 7.83 KB
/
ReturnValueNameAttribute.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<Type Name="ReturnValueNameAttribute" FullName="System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute">
<TypeSignature Language="C#" Value="public sealed class ReturnValueNameAttribute : Attribute" />
<TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit ReturnValueNameAttribute extends System.Attribute" />
<TypeSignature Language="DocId" Value="T:System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute" />
<TypeSignature Language="VB.NET" Value="Public NotInheritable Class ReturnValueNameAttribute
Inherits Attribute" />
<TypeSignature Language="F#" Value="type ReturnValueNameAttribute = class
 inherit Attribute" />
<TypeSignature Language="C++ CLI" Value="public ref class ReturnValueNameAttribute sealed : Attribute" />
<AssemblyInfo>
<AssemblyName>System.Runtime.InteropServices.WindowsRuntime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.3.0</AssemblyVersion>
<AssemblyVersion>4.0.4.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<TypeForwardingChain>
<TypeForwarding From="mscorlib" FromVersion="4.0.0.0" To="System.Runtime.InteropServices.WindowsRuntime" ToVersion="0.0.0.0" FrameworkAlternate="dotnet-uwp-10.0" />
</TypeForwardingChain>
<Base>
<BaseTypeName>System.Attribute</BaseTypeName>
</Base>
<Interfaces />
<Attributes>
<Attribute>
<AttributeName Language="C#">[System.AttributeUsage(System.AttributeTargets.Delegate | System.AttributeTargets.ReturnValue, AllowMultiple=false, Inherited=false)]</AttributeName>
<AttributeName Language="F#">[<System.AttributeUsage(System.AttributeTargets.Delegate | System.AttributeTargets.ReturnValue, AllowMultiple=false, Inherited=false)>]</AttributeName>
</Attribute>
</Attributes>
<Docs>
<summary>Specifies the name of the return value of a method in a Windows Runtime component.</summary>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
In a Windows Runtime component, all the parameters of a method and the return value must have names. By default, [Winmdexp.exe (Windows Runtime Metadata Export Tool)](/dotnet/framework/tools/winmdexp-exe-windows-runtime-metadata-export-tool) gives the return value the name "value". When you use a component in a Windows 8.x Store app written in JavaScript, you can use this name to retrieve the return value. For example, suppose a component defines a method that has a return value and two `out` parameters (`ByRef` parameters with the <xref:System.Runtime.InteropServices.OutAttribute> attribute in Visual Basic):
```csharp
public static int ComputeAverage([ReadOnlyArray()] int[] input,
out int minValue, out int maxValue)
{
…
}
```
```vb
Public Shared Function ComputeAverage( _
<ReadOnlyArray()> ByVal input As Integer, _
<Out()> ByRef minValue As Integer, _
<Out()> ByRef maxValue As Integer) As Integer
…
End Function
```
When you call the function from JavaScript, you can access the return value by its default name (`value`):
```javascript
var data = [5, 13, 23, 37];
var results = SampleComponent.TestStuff.computeAverage(data);
var formattedResults = "Min=" + results.minValue + ", Avg=" +
results.value + ", Max=" + results.maxValue;
```
You must give the return value a different name if you already have a parameter named "value". Or you might simply want to use a more meaningful name (such as "average" in this example). Apply the <xref:System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute> attribute to your method and specify a new name.
```csharp
[return: ReturnValueName("average")]
public static int ComputeAverage([ReadOnlyArray()] int[] input,
out int minValue, out int maxValue)
{
…
}
```
```vb
Public Shared Function ComputeAverage( _
<ReadOnlyArray()> ByVal input As Integer, _
<Out()> ByRef minValue As Integer, _
<Out()> ByRef maxValue As Integer) _
As <ReturnValueName("average")> Integer
…
End Function
```
]]></format>
</remarks>
<related type="ExternalDocumentation" href="https://go.microsoft.com/fwlink/p/?LinkId=238313">Creating Windows Runtime Components in C# and Visual Basic</related>
</Docs>
<Members>
<Member MemberName=".ctor">
<MemberSignature Language="C#" Value="public ReturnValueNameAttribute (string name);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string name) cil managed" />
<MemberSignature Language="DocId" Value="M:System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute.#ctor(System.String)" />
<MemberSignature Language="VB.NET" Value="Public Sub New (name As String)" />
<MemberSignature Language="F#" Value="new System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute : string -> System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute" Usage="new System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute name" />
<MemberSignature Language="C++ CLI" Value="public:
 ReturnValueNameAttribute(System::String ^ name);" />
<MemberType>Constructor</MemberType>
<AssemblyInfo>
<AssemblyName>System.Runtime.InteropServices.WindowsRuntime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.3.0</AssemblyVersion>
<AssemblyVersion>4.0.4.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Parameters>
<Parameter Name="name" Type="System.String" />
</Parameters>
<Docs>
<param name="name">The name of the return value.</param>
<summary>Initializes a new instance of the <see cref="T:System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute" /> class, and specifies the name of the return value.</summary>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="Name">
<MemberSignature Language="C#" Value="public string Name { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance string Name" />
<MemberSignature Language="DocId" Value="P:System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute.Name" />
<MemberSignature Language="VB.NET" Value="Public ReadOnly Property Name As String" />
<MemberSignature Language="F#" Value="member this.Name : string" Usage="System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute.Name" />
<MemberSignature Language="C++ CLI" Value="public:
 property System::String ^ Name { System::String ^ get(); };" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyName>System.Runtime.InteropServices.WindowsRuntime</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.3.0</AssemblyVersion>
<AssemblyVersion>4.0.4.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>mscorlib</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String</ReturnType>
</ReturnValue>
<Docs>
<summary>Gets the name that was specified for the return value of a method in a Windows Runtime component.</summary>
<value>The name of the method's return value.</value>
<remarks>To be added.</remarks>
</Docs>
</Member>
</Members>
</Type>