using System.Reflection; namespace Umbraco.Cms.Core.Composing; /// /// Indicates that a composer should be disabled. /// /// /// /// If a type is specified, disables the composer of that type, else disables the composer marked with the /// attribute. /// /// This attribute is *not* inherited. /// This attribute applies to classes only, it is not possible to enable/disable interfaces. /// /// Assembly-level has greater priority than /// /// attribute when it is marking the composer itself, but lower priority that when it is referencing another /// composer. /// /// [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false)] public class DisableAttribute : Attribute { /// /// Initializes a new instance of the class. /// public DisableAttribute() { } public DisableAttribute(string fullTypeName, string assemblyName) => DisabledType = Assembly.Load(assemblyName)?.GetType(fullTypeName); /// /// Initializes a new instance of the class. /// public DisableAttribute(Type disabledType) => DisabledType = disabledType; /// /// Gets the disabled type, or null if it is the composer marked with the attribute. /// public Type? DisabledType { get; } }