Common Attributes

[Obsolete] Attribute

Marks a program element as obsolete or deprecated, generating a warning or error when used.

[Obsolete("This method is deprecated, use NewMethod instead.")]
public void OldMethod() { }


[Serializable] Attribute

Indicates that an object can be serialized for storage or transmission.

[Serializable]
public class SerializableObject { }


[DataContract] and [DataMember] Attributes

Used in Windows Communication Foundation (WCF) for specifying serializable classes and members.

[DataContract]
public class Person
{
    [DataMember]
    public string FirstName { get; set; }
}


[DllImport] Attribute

Used for calling functions from unmanaged code.

class Program
{
    [DllImport("user32.dll")]
    public static extern int MessageBox(int hWnd, string text, string caption, int type);
}


[Conditional] Attribute

Specifies that a method should be called conditionally based on compilation symbols.

class Program
{
    [Conditional("DEBUG")]
    public static void DebugMethod()
    {
        // This method will only be included if DEBUG is defined.
    }
}


[ThreadStatic] Attribute

Declares thread-local storage for a field, giving each thread its own copy.

public class ThreadLocalExample
{
    [ThreadStatic]
    public static int threadLocalValue;
}


[Serializable] Attribute

Marks a class as serializable for binary serialization.

[Serializable]
public class SerializableClass { }


[DefaultValue] Attribute

Specifies the default value for a property or field.

public class Example
{
    [DefaultValue(42)]
    public int MyProperty { get; set; }
}


[Description] Attribute

Provides a description for a property, event, or component.

public class Example
{
    [Description("This is a description.")]
    public int MyProperty { get; set; }
}


[DisplayName] Attribute

Specifies a display name for a property or event.

public class Example
{
    [DisplayName("Display Name")]
    public int MyProperty { get; set; }
}


[Browsable] Attribute

Indicates whether a property or event should be displayed in a designer.

public class Example
{
    [Browsable(false)]
    public int MyProperty { get; set; }
}


[NonSerialized] Attribute

Prevents a field from being serialized.

[Serializable]
public class SerializableObject
{
    [NonSerialized]
    public int NonSerializableField;
}


[XmlIgnore] Attribute

Excludes a property from XML serialization.

public class Example
{
    [XmlIgnore]
    public int MyProperty { get; set; }
}


[XmlAttribute] Attribute

Specifies that a property should be serialized as an XML attribute.

public class Person
{
    [XmlAttribute]
    public string FirstName { get; set; }
}


[XmlElement] Attribute

Specifies that a property should be serialized as an XML element.

public class Person
{
    [XmlElement]
    public string FirstName { get; set; }
}


[Serializable] Attribute

Marks a method as a web method that can be called from a web service.

[WebService]
public class MyWebService
{
    [WebMethod]
    public string HelloWorld()
    {
        return "Hello, world!";
    }
}


[Authorize] Attribute

Restricts access to a controller or action method to authorized users.

[Authorize]
public class SecureController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}


[Route] Attribute

Specifies the route template for an action method in ASP.NET Core.

[Route("api/[controller]")]
public class MyController : Controller
{
    [HttpGet("{id}")]
    public IActionResult Get(int id)
    {
        // Handle GET request
    }
}


[Required] Attribute

Indicates that a property is required for model validation.

public class Person
{
    [Required]
    public string FirstName { get; set; }
}


[MaxLength] Attribute

Specifies the maximum length for a string property.

public class Person
{
    [MaxLength(50)]
    public string FirstName { get; set; }
}


[MinLength] Attribute

Specifies the minimum length for a string property.

public class Person
{
    [MinLength(2)]
    public string FirstName { get; set; }
}


[RegularExpression] Attribute

Defines a regular expression pattern for string validation.

public class Person
{
    [RegularExpression(@"^[A-Za-z]+$")]
    public string FirstName { get; set; }
}


[Key] Attribute

Specifies a primary key for an entity in Entity Framework.

public class Person
{
    [Key]
    public int Id { get; set; }
}


[ForeignKey] Attribute

Indicates a foreign key relationship in Entity Framework.

public class Order
{
    public int CustomerId { get; set; }
    [ForeignKey("CustomerId")]
    public Customer Customer { get; set; }
}


[Table] Attribute

Specifies the table name for an entity in Entity Framework.

[Table("ProductTable")]
public class Product
{
    public int Id { get; set; }
}


[Column] Attribute

Maps a property to a specific database column in Entity Framework.

public class Product
{
    [Column("ProductName")]
    public string Name { get; set; }
}


[StringLength] Attribute

Specifies the maximum and minimum string length for validation.

public class Person
{
    [StringLength(50, MinimumLength = 2)]
    public string FirstName { get; set; }
}


[JsonProperty] Attribute

Maps a property to a specific JSON property name during serialization and deserialization.

public class Person
{
    [JsonProperty("first_name")]
    public string FirstName { get; set; }
}


[JsonIgnore] Attribute

Excludes a property from JSON serialization.

public class Person
{
    [JsonIgnore]
    public string SecretData { get; set; }
}


[AllowedValues] and [DeniedValues] Attributes

AllowedValues restricts a property to specific values, while DeniedValues blocks certain values

public class Product
{
    [AllowedValues("Chocolate", "Candy", "Fruit")]
    [DeniedValues("Vegetable", "Meat")]
    public required string Title { get; set; }
}


[Base64String] Attributes

Ensures that the property contains a valid Base64-encoded string

public class Document
{
    [Base64String]
    public required string EncodedContent { get; set; }
}


[Length] Attributes

Restricts the length of the string between 5 and 50 characters

public class UserProfile
{
    [Length(5, 50)]
    public required string Username { get; set; }
}


[Range] Attributes

Ensures that the date is within the specified range (for DateOnly and TimeOnly types)

public class Event
{
    [Range(typeof(DateOnly), "2024-01-01", "2025-12-31")]
    public required DateOnly EventDate { get; set; }
  
    [Range(typeof(TimeOnly), "08:00:00", "18:00:00")]
    public required TimeOnly EventTime { get; set; }
}


[RequiredIf] Attributes

Makes the property required only if a condition is met (e.g., TrackingNumber is required if IsExpressShipping is true)

public class Order
{
    [RequiredIf(nameof(IsExpressShipping), true)]
    public string? TrackingNumber { get; set; }
  
    public bool IsExpressShipping { get; set; }
}


[UnicodeCharacters] Attributes

Ensures that the string contains only Unicode characters

public class Message
{
    [UnicodeCharacters]
    public required string Content { get; set; }
}


[DisallowNull] Attributes

Prevents the property from being set to null

public class Settings
{
    [DisallowNull]
    public required string ConfigName { get; set; }
}


[DisallowDefault] Attributes

Prevents the property from being set to its default value (e.g., 0 for numeric types)

public class Transaction
{
    [DisallowDefault]
    public required decimal Amount { get; set; }
}


[DataType] Attributes

Specifies that the property should be treated as a specific data type (e.g., Currency and Duration)

public class Payment
{
    [DataType(DataType.Currency)]
    public required decimal TotalPrice { get; set; }
  
    [DataType(DataType.Duration)]
    public required TimeSpan ProcessingTime { get; set; }
}


[Display] Attributes

Enhances display attributes with localization support

public class Product
{
    [Display(Name = "Product Name", Description = "The name of the product", ResourceType = typeof(Resources))]
    public required string Title { get; set; }
}