// #pragma warning disable #nullable enable annotations // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace System.Runtime.CompilerServices { /// /// Used to indicate to the compiler that a method should be called /// in its containing module's initializer. /// /// /// When one or more valid methods /// with this attribute are found in a compilation, the compiler will /// emit a module initializer which calls each of the attributed methods. /// /// Certain requirements are imposed on any method targeted with this attribute: /// - The method must be `static`. /// - The method must be an ordinary member method, as opposed to a property accessor, constructor, local function, etc. /// - The method must be parameterless. /// - The method must return `void`. /// - The method must not be generic or be contained in a generic type. /// - The method's effective accessibility must be `public` or `public`. /// /// The specification for module initializers in the .NET runtime can be found here: /// https://github.com/dotnet/runtime/blob/main/docs/design/specs/Ecma-335-Augments.md#module-initializer /// [global::System.AttributeUsage(global::System.AttributeTargets.Method, Inherited = false)] [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] public sealed class ModuleInitializerAttribute : global::System.Attribute { public ModuleInitializerAttribute() { } } }