Bird
Raised Fist0
C Sharp (C#)programming~30 mins

Attribute declaration syntax in C Sharp (C#) - Mini Project: Build & Apply

Choose your learning style10 modes available
Attribute declaration syntax
📖 Scenario: You are creating a simple program to mark classes and methods with custom notes using attributes. Attributes are special tags that add extra information to your code, like labels on a box.
🎯 Goal: Learn how to declare and use attributes in C# by creating a custom attribute and applying it to a class and a method.
📋 What You'll Learn
Declare a custom attribute class called InfoAttribute with a string property Description.
Create a class called Calculator and apply the InfoAttribute with a description.
Add a method Add inside Calculator and apply the InfoAttribute with a description.
Print the descriptions stored in the attributes for the class and method.
💡 Why This Matters
🌍 Real World
Attributes are used in real-world C# programs to add metadata for tools, frameworks, and libraries. For example, marking methods as test cases or marking classes for serialization.
💼 Career
Understanding attribute declaration and usage is important for C# developers working with frameworks like ASP.NET, Entity Framework, or writing reusable libraries.
Progress0 / 4 steps
1
Declare the InfoAttribute class
Declare a public class called InfoAttribute that inherits from System.Attribute. Add a public string property called Description with a getter and setter.
C Sharp (C#)
Hint

Remember, attributes in C# inherit from System.Attribute. Use public string Description { get; set; } to create the property.

2
Create the Calculator class and apply InfoAttribute
Create a public class called Calculator. Apply the InfoAttribute to it with the description set to "Performs basic math operations".
C Sharp (C#)
Hint

Use square brackets [] to apply the attribute above the class. Set the Description property inside the parentheses.

3
Add Add method with InfoAttribute
Inside the Calculator class, add a public method called Add that takes two integers a and b and returns their sum. Apply the InfoAttribute to this method with the description "Adds two numbers".
C Sharp (C#)
Hint

Apply the attribute above the method. The method should return the sum of a and b.

4
Print attribute descriptions for class and method
Write code in Main to get the InfoAttribute from the Calculator class and its Add method. Print the Description property of both attributes.
C Sharp (C#)
Hint

Use Attribute.GetCustomAttribute to get the attribute from the class and method. Then print their Description.

Practice

(1/5)
1. What is the correct way to declare an attribute named Serializable above a class in C#?
easy
A. [Serializable] public class MyClass { }
B. Serializable public class MyClass { }
C. (Serializable) public class MyClass { }
D. {Serializable} public class MyClass { }

Solution

  1. Step 1: Understand attribute syntax

    Attributes in C# are declared using square brackets [] placed above the code element.
  2. Step 2: Apply correct syntax for class attribute

    The attribute Serializable must be enclosed in square brackets before the class declaration.
  3. Final Answer:

    [Serializable] public class MyClass { } -> Option A
  4. Quick Check:

    Attributes use [] brackets = A [OK]
Hint: Attributes always use square brackets [] above declarations [OK]
Common Mistakes:
  • Using parentheses () instead of square brackets
  • Omitting brackets entirely
  • Using curly braces {} instead of brackets
2. Which of the following is the correct syntax to declare an attribute with a parameter "Test" for Obsolete?
easy
A. [Obsolete("Test")]()
B. [Obsolete: "Test"]
C. [Obsolete = "Test"]
D. [Obsolete("Test")]

Solution

  1. Step 1: Recall attribute parameter syntax

    Attribute parameters are passed inside parentheses immediately after the attribute name.
  2. Step 2: Identify correct parameter passing

    The string parameter "Test" must be inside parentheses without extra symbols or colons.
  3. Final Answer:

    [Obsolete("Test")] -> Option D
  4. Quick Check:

    Parameters go inside () after attribute name [OK]
Hint: Use parentheses () for parameters inside square brackets [] [OK]
Common Mistakes:
  • Using colons or equals signs instead of parentheses
  • Adding extra parentheses after the attribute
  • Placing parameters outside brackets
3. What will be the output of the following code?
[Obsolete("Use NewMethod instead")]
public void OldMethod() { Console.WriteLine("Old"); }

public void NewMethod() { Console.WriteLine("New"); }

OldMethod();
medium
A. New
B. Use NewMethod instead
C. Old
D. Compilation error

Solution

  1. Step 1: Understand the Obsolete attribute effect

    The Obsolete attribute marks a method as outdated but does not prevent it from running.
  2. Step 2: Analyze method call output

    Calling OldMethod() will execute its body and print "Old" to the console.
  3. Final Answer:

    Old -> Option C
  4. Quick Check:

    Obsolete warns but runs method = Old [OK]
Hint: Obsolete warns but method still runs unless error set [OK]
Common Mistakes:
  • Thinking Obsolete stops method execution
  • Expecting warning text as output
  • Confusing method names in output
4. Identify the error in this attribute declaration:
[Obsolete("Deprecated"]
public void Old() { }
medium
A. Missing closing parenthesis in attribute
B. Missing closing square bracket in attribute
C. Attribute name misspelled
D. Method missing return type

Solution

  1. Step 1: Check attribute brackets and parentheses

    The attribute starts with [Obsolete("Deprecated"] but the parentheses are not closed properly.
  2. Step 2: Identify missing closing parenthesis

    The string parameter "Deprecated" is opened with a parenthesis but lacks the closing ) before the closing square bracket.
  3. Final Answer:

    Missing closing parenthesis in attribute -> Option A
  4. Quick Check:

    Parentheses must close before square bracket [OK]
Hint: Check matching () inside [] for attributes [OK]
Common Mistakes:
  • Forgetting to close parentheses before square bracket
  • Confusing square brackets with parentheses
  • Assuming method return type causes attribute error
5. You want to create a custom attribute Info that takes a string parameter description. Which is the correct way to declare it?
hard
A. public attribute Info(string description) { }
B. public class InfoAttribute : Attribute { public InfoAttribute(string description) { } }
C. [Info(string description)] public class MyClass { }
D. public class Info : Attribute { public void Info(string description) { } }

Solution

  1. Step 1: Understand custom attribute class declaration

    Custom attributes must be classes derived from Attribute and named with Attribute suffix.
  2. Step 2: Define constructor with parameter

    The constructor takes the string parameter description to accept data when used.
  3. Final Answer:

    public class InfoAttribute : Attribute { public InfoAttribute(string description) { } } -> Option B
  4. Quick Check:

    Custom attribute = class derived from Attribute with constructor [OK]
Hint: Custom attributes are classes ending with Attribute and inherit Attribute [OK]
Common Mistakes:
  • Using 'attribute' keyword instead of class
  • Trying to declare attribute parameters in square brackets
  • Defining method instead of constructor for parameters
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard