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

Reading attributes with reflection in C Sharp (C#) - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is an attribute in C#?
An attribute is a way to add extra information (metadata) to code elements like classes, methods, or properties. It helps describe or control behavior without changing the code logic.
Click to reveal answer
beginner
How do you read attributes using reflection in C#?
You use reflection to get the type or member info, then call methods like GetCustomAttributes() to find the attributes applied to that element.
Click to reveal answer
intermediate
What does the method GetCustomAttributes() return?
It returns an array of objects representing all attributes applied to a member or type. You can then check or cast these objects to specific attribute types.
Click to reveal answer
intermediate
Why use reflection to read attributes?
Reflection lets you inspect code metadata at runtime, so you can change behavior dynamically based on attributes without hardcoding logic.
Click to reveal answer
beginner
Show a simple example of reading a custom attribute from a class using reflection.
Define a custom attribute class, apply it to a class, then use typeof(MyClass).GetCustomAttributes() to get and read the attribute data.
Click to reveal answer
Which method is commonly used to get attributes of a class in C#?
AGetAttributes()
BGetMethods()
CGetProperties()
DGetCustomAttributes()
What type of object does GetCustomAttributes() return?
AArray of attribute objects
BSingle attribute object
CString description
DBoolean value
Why would you use reflection to read attributes?
ATo inspect metadata at runtime
BTo improve compile time speed
CTo change source code
DTo create new classes
Which namespace must you include to use reflection in C#?
ASystem.IO
BSystem.Reflection
CSystem.Text
DSystem.Linq
If you want to check if a class has a specific attribute, which approach is best?
AUse Console.WriteLine()
BUse GetMethods()
CUse GetCustomAttributes() and check for the attribute type
DUse GetProperties()
Explain how to read custom attributes from a class using reflection in C#.
Think about how to get metadata at runtime and identify the attribute.
You got /5 concepts.
    Why is reading attributes with reflection useful in programming?
    Consider how metadata can guide program decisions without changing code.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does reading attributes with reflection in C# allow you to do?
      easy
      A. Access extra information added to classes or methods at runtime
      B. Change the source code of a program while it runs
      C. Compile code faster by skipping attribute checks
      D. Automatically generate user interfaces without coding

      Solution

      1. Step 1: Understand what attributes are

        Attributes are extra notes or metadata added to code elements like classes or methods.
      2. Step 2: Understand reflection's role

        Reflection lets you look at these attributes while the program runs, to read their information.
      3. Final Answer:

        Access extra information added to classes or methods at runtime -> Option A
      4. Quick Check:

        Reflection reads attributes = Access extra info [OK]
      Hint: Reflection reads metadata added to code elements [OK]
      Common Mistakes:
      • Thinking reflection changes code instead of reading it
      • Confusing attributes with variables or methods
      • Believing attributes speed up compilation
      2. Which of the following is the correct way to get custom attributes of a class using reflection in C#?
      easy
      A. GetAttributes(typeof(MyClass))
      B. typeof(MyClass).GetCustomAttributes()
      C. MyClass.GetAttributes()
      D. MyClass.Attributes()

      Solution

      1. Step 1: Recall the reflection syntax for attributes

        In C#, to get attributes of a class, use typeof(ClassName).GetCustomAttributes().
      2. Step 2: Check each option

        Only typeof(MyClass).GetCustomAttributes() uses the correct syntax with typeof and GetCustomAttributes method.
      3. Final Answer:

        typeof(MyClass).GetCustomAttributes() -> Option B
      4. Quick Check:

        Correct syntax uses typeof and GetCustomAttributes() [OK]
      Hint: Use typeof(Class).GetCustomAttributes() to read attributes [OK]
      Common Mistakes:
      • Calling GetAttributes() directly on class name
      • Using instance methods instead of typeof
      • Confusing method names like Attributes()
      3. Given this code snippet, what will be the output?
      [System.Obsolete("Use NewMethod instead")]
      class OldClass {}
      
      var attrs = typeof(OldClass).GetCustomAttributes(typeof(System.ObsoleteAttribute), false);
      Console.WriteLine(attrs.Length);
      medium
      A. 0
      B. null
      C. Throws an exception
      D. 1

      Solution

      1. Step 1: Identify the attribute applied

        The class OldClass has the Obsolete attribute applied once.
      2. Step 2: Check GetCustomAttributes call

        GetCustomAttributes is called with ObsoleteAttribute type, so it returns an array with that attribute instance.
      3. Final Answer:

        1 -> Option D
      4. Quick Check:

        One Obsolete attribute found = 1 [OK]
      Hint: Count attributes returned by GetCustomAttributes to find output length [OK]
      Common Mistakes:
      • Assuming zero because attribute is ignored
      • Expecting null instead of empty array
      • Thinking it throws exception without reason
      4. What is wrong with this code snippet that tries to read attributes?
      class MyClass {}
      
      var attrs = MyClass.GetCustomAttributes();
      Console.WriteLine(attrs.Length);
      medium
      A. MyClass does not have any attributes
      B. Console.WriteLine cannot print Length property
      C. GetCustomAttributes is not a method of the class itself
      D. Missing semicolon after class declaration

      Solution

      1. Step 1: Check method call on class

        GetCustomAttributes is a method of Type, not the class itself, so calling MyClass.GetCustomAttributes() is invalid.
      2. Step 2: Correct usage

        You must use typeof(MyClass).GetCustomAttributes() to get attributes via reflection.
      3. Final Answer:

        GetCustomAttributes is not a method of the class itself -> Option C
      4. Quick Check:

        Use typeof(Class).GetCustomAttributes() not Class.GetCustomAttributes() [OK]
      Hint: Call GetCustomAttributes on typeof(Class), not class name [OK]
      Common Mistakes:
      • Calling GetCustomAttributes directly on class name
      • Ignoring that GetCustomAttributes is a Type method
      • Assuming attributes exist without checking
      5. You want to read a custom attribute InfoAttribute applied to multiple methods in a class and print their descriptions. Which approach correctly reads and prints these descriptions?
      hard
      A. Use reflection to get MethodInfo array, then for each method call GetCustomAttributes(typeof(InfoAttribute), false) and print the Description property
      B. Call GetCustomAttributes on the class type directly and print Description from the first attribute found
      C. Use a foreach loop on class fields and call GetCustomAttributes on each field
      D. Use reflection to get properties of the class and print their names

      Solution

      1. Step 1: Identify target elements

        The attribute InfoAttribute is applied to methods, so we must get methods via reflection.
      2. Step 2: Read attributes per method

        For each MethodInfo, call GetCustomAttributes with InfoAttribute type to get the attribute instance and access its Description property.
      3. Step 3: Print descriptions

        Print the Description property for each method's attribute found.
      4. Final Answer:

        Use reflection to get MethodInfo array, then for each method call GetCustomAttributes(typeof(InfoAttribute), false) and print the Description property -> Option A
      5. Quick Check:

        Read attributes per method, not class or fields [OK]
      Hint: Get methods, then read attributes on each method [OK]
      Common Mistakes:
      • Reading attributes only on class instead of methods
      • Checking fields instead of methods
      • Assuming one attribute for whole class
      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