Clarify the rules on UnmanagedCallersOnly
This commit is contained in:
parent
94b0500e97
commit
7ff6cb3bb7
|
@ -358,9 +358,12 @@ the attribute:
|
|||
|
||||
* It is an error to directly call a method annotated with this attribute from C#. Users must obtain a function pointer to
|
||||
the method and then invoke that pointer.
|
||||
* It is an error to apply the attribute to anything other than a static method. The C# compiler will mark any non-static
|
||||
methods imported from metadata with this attribute as unsupported by the language.
|
||||
* It is an error to have managed types as parameters or the return type of a method marked with the attribute.
|
||||
* It is an error to apply the attribute to anything other than an ordinary static method or ordinary static local function.
|
||||
The C# compiler will mark any non-static methods imported from metadata with this attribute as unsupported by the language.
|
||||
* It is an error to have managed types as parameters or the return type of a method marked with the attribute. This includes
|
||||
types with type parameters, even if those type parameters are constrained to `unmanaged` or substituted with `unmanaged` types.
|
||||
* It is an error for a method attributed with `UnmanagedCallersOnlyAttribute` to have type parameters, even if those type
|
||||
parameters are constrained to `unmanaged`.
|
||||
* It is an error to convert a method marked with the attribute to a delegate type.
|
||||
* It is an error to specify any types for `UnmanagedCallersOnly.CallConvs` that do not meet the requirements for calling
|
||||
convention `modopt`s in metadata.
|
||||
|
|
Loading…
Reference in a new issue