| File: System\Runtime\CompilerServices\Attributes.cs | Web Access |
| Project: src\runtime\src\libraries\System.Runtime.CompilerServices.VisualC\src\System.Runtime.CompilerServices.VisualC.csproj (System.Runtime.CompilerServices.VisualC) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // We need to add an InternalsVisibleToAttribute here to mscorlib since we need to expose some of these types via type forwards in mscorlib // since tooling expects some types to live there and not in System.Runtime.CompilerServices.VisualC, but we don't want to expose // these types publicly. [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("mscorlib, PublicKey=00000000000000000400000000000000")] #pragma warning disable IDE0060 namespace System.Runtime.CompilerServices { // Types used by the C++/CLI compiler during linking. [TypeForwardedFrom("mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")] internal sealed class AssemblyAttributesGoHere { internal AssemblyAttributesGoHere() { } } [TypeForwardedFrom("mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")] internal sealed class AssemblyAttributesGoHereS { internal AssemblyAttributesGoHereS() { } } [TypeForwardedFrom("mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")] internal sealed class AssemblyAttributesGoHereM { internal AssemblyAttributesGoHereM() { } } [TypeForwardedFrom("mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")] internal sealed class AssemblyAttributesGoHereSM { internal AssemblyAttributesGoHereSM() { } } [AttributeUsage(AttributeTargets.All)] internal sealed class DecoratedNameAttribute : Attribute { public DecoratedNameAttribute(string decoratedName) { } } // Indicates that the modified instance is pinned in memory. public static class IsPinned { } public static partial class IsBoxed { } public static partial class IsByValue { } public static partial class IsCopyConstructed { } public static partial class IsExplicitlyDereferenced { } public static partial class IsImplicitlyDereferenced { } public static partial class IsJitIntrinsic { } public static partial class IsLong { } public static partial class IsSignUnspecifiedByte { } public static partial class IsUdtReturn { } [AttributeUsage(AttributeTargets.Struct)] public sealed class HasCopySemanticsAttribute : Attribute { public HasCopySemanticsAttribute() { } } [AttributeUsage(AttributeTargets.Enum)] public sealed class ScopelessEnumAttribute : Attribute { public ScopelessEnumAttribute() { } } [AttributeUsage(AttributeTargets.Struct, Inherited = true)] public sealed class NativeCppClassAttribute : Attribute { public NativeCppClassAttribute() { } } [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] public sealed class CppInlineNamespaceAttribute : Attribute { public CppInlineNamespaceAttribute(string dottedName) { } } [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Interface, AllowMultiple = true, Inherited = false)] public sealed class RequiredAttributeAttribute : Attribute { public RequiredAttributeAttribute(Type requiredContract) => RequiredContract = requiredContract; public Type RequiredContract { get; } } [AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Property)] [TypeForwardedFrom("mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")] internal sealed class SuppressMergeCheckAttribute : Attribute { public SuppressMergeCheckAttribute() { } } // The CLR data marshaler has some behaviors that are incompatible with // C++. Specifically, C++ treats boolean variables as byte size, whereas // the marshaller treats them as 4-byte size. Similarly, C++ treats // wchar_t variables as 4-byte size, whereas the marshaller treats them // as single byte size under certain conditions. In order to work around // such issues, the C++ compiler will emit a type that the marshaller will // marshal using the correct sizes. In addition, the compiler will place // this modopt onto the variables to indicate that the specified type is // not the true type. Any compiler that needed to deal with similar // marshalling incompatibilities could use this attribute as well. // // Indicates that the modified instance differs from its true type for // correct marshalling. public static class CompilerMarshalOverride { } }