📖 Scenario: Imagine you have a simple class representing a car. You want to learn how to look inside this class to see what methods and properties it has. This is useful when you want to understand or use a class without reading all its code.
🎯 Goal: You will create a class called Car with some properties and methods. Then, you will write code to inspect and list all the methods and properties of the Car class using reflection.
📋 What You'll Learn
Create a class Car with properties and methods
Create a variable to hold the Type of the Car class
Use reflection to get all methods and properties of the Car class
Print the names of all methods and properties
💡 Why This Matters
🌍 Real World
Inspecting methods and properties helps developers understand and use classes from libraries or frameworks without reading all the source code.
💼 Career
Reflection is useful in debugging, building tools, and frameworks that need to work with unknown or dynamic types at runtime.
Progress0 / 4 steps
1
Create the Car class with properties and methods
Create a class called Car with two public properties: Make of type string and Year of type int. Also add a public method called StartEngine that returns void and has no parameters.
C Sharp (C#)
Hint
Use public class Car to start the class. Add properties with public string Make { get; set; } and public int Year { get; set; }. Add a method public void StartEngine().
2
Get the Type object for the Car class
Create a variable called carType and set it to the Type of the Car class using typeof(Car).
C Sharp (C#)
Hint
Use Type carType = typeof(Car); to get the type information of the Car class.
3
Use reflection to get methods and properties
Create two variables: methods and properties. Set methods to carType.GetMethods() and properties to carType.GetProperties().
C Sharp (C#)
Hint
Use carType.GetMethods() to get all methods and carType.GetProperties() to get all properties.
4
Print the names of all methods and properties
Use a foreach loop to print the name of each method in methods and each property in properties. Use Console.WriteLine to print each name.
C Sharp (C#)
Hint
Use foreach (var method in methods) { Console.WriteLine(method.Name); } and similarly for properties.
Practice
(1/5)
1. Which C# method is used to get the type information of an object instance?
easy
A. typeof()
B. GetMethods()
C. GetProperties()
D. GetType()
Solution
Step 1: Understand the difference between GetType() and typeof()
GetType() is called on an object instance to get its runtime type, while typeof() is used with a type name at compile time.
Step 2: Identify the method that works on an object instance
Since the question asks for the method used on an object instance, GetType() is the correct choice.
Final Answer:
GetType() -> Option D
Quick Check:
Object instance method for type info = GetType() [OK]
Hint: Use GetType() on objects, typeof() on type names [OK]
Common Mistakes:
Confusing typeof() with GetType()
Using GetMethods() to get type info
Thinking GetProperties() returns type
2. Which of the following is the correct syntax to get all methods of the String type in C#?
easy
A. typeof(String).GetMethods()
B. typeof(String).GetProperties()
C. String.GetMethods()
D. GetType(String).GetMethods()
Solution
Step 1: Recall how to get methods from a type
Use typeof(TypeName).GetMethods() to get all methods of a type.
Step 2: Check each option's syntax
typeof(String).GetMethods() uses typeof(String).GetMethods(), which is correct. typeof(String).GetProperties() calls GetProperties(), not methods. String.GetMethods() tries to call GetMethods() on the type name directly, which is invalid. GetType(String).GetMethods() uses GetType(String), which is incorrect syntax.
Final Answer:
typeof(String).GetMethods() -> Option A
Quick Check:
Get methods from type = typeof(Type).GetMethods() [OK]
Hint: Use typeof(Type).GetMethods() to list methods [OK]
Common Mistakes:
Calling GetMethods() on type name directly
Mixing GetProperties() with GetMethods()
Using GetType() with a type name instead of instance
3. What will the following C# code output?
var props = typeof(DateTime).GetProperties();
Console.WriteLine(props.Length);
medium
A. 0
B. More than 0
C. Compilation error
D. Runtime exception
Solution
Step 1: Understand what GetProperties() returns
GetProperties() returns an array of all public properties of the type.
Step 2: Check if DateTime has properties
DateTime has many properties like Now, Today, Year, Month, etc., so the array length will be more than zero.
Final Answer:
More than 0 -> Option B
Quick Check:
DateTime properties count > 0 [OK]
Hint: Types like DateTime have many properties, so length > 0 [OK]
Common Mistakes:
Assuming no properties means length 0
Expecting compilation or runtime errors
Confusing methods with properties
4. Identify the error in this C# code snippet:
var typeInfo = "hello".GetType();
var methods = typeInfo.GetMethod();
medium
A. GetType() is invalid on string
B. Missing parentheses on GetType
C. GetMethod() should be GetMethods()
D. Cannot call GetMethod() on typeInfo
Solution
Step 1: Check usage of GetType()
"hello".GetType() is valid and returns the type of the string instance.
Step 2: Check method name on typeInfo
There is no method called GetMethod() without parameters; to get all methods, use GetMethods().
Final Answer:
GetMethod() should be GetMethods() -> Option C
Quick Check:
Use GetMethods() to get all methods [OK]
Hint: Use GetMethods() (plural) to list all methods [OK]
Common Mistakes:
Using GetMethod() without parameters
Thinking GetType() is invalid on string
Missing parentheses on method calls
5. You want to list all public properties of a custom class Person and print their names. Which code snippet correctly does this?
hard
A. var props = typeof(Person).GetProperties(); foreach(var p in props) Console.WriteLine(p.Name);
B. var props = new Person().GetProperties(); foreach(var p in props) Console.WriteLine(p.Name);
C. var props = typeof(Person).GetMethods(); foreach(var p in props) Console.WriteLine(p.Name);
D. var props = Person.GetProperties(); foreach(var p in props) Console.WriteLine(p.Name);
Solution
Step 1: Identify how to get properties of a type
Use typeof(Person).GetProperties() to get all public properties of the Person class.
Step 2: Check the foreach loop to print property names
Iterate over the properties and print each p.Name to display property names.
Step 3: Verify other options
var props = new Person().GetProperties(); foreach(var p in props) Console.WriteLine(p.Name); tries to call GetProperties() on an instance, which is invalid. var props = typeof(Person).GetMethods(); foreach(var p in props) Console.WriteLine(p.Name); gets methods, not properties. var props = Person.GetProperties(); foreach(var p in props) Console.WriteLine(p.Name); calls GetProperties() directly on the class name, which is invalid syntax.
Final Answer:
var props = typeof(Person).GetProperties(); foreach(var p in props) Console.WriteLine(p.Name); -> Option A
Quick Check:
Use typeof(Type).GetProperties() and loop to print names [OK]
Hint: Use typeof(Class).GetProperties() and loop to print names [OK]
Common Mistakes:
Calling GetProperties() on an instance
Using GetMethods() instead of GetProperties()
Calling GetProperties() directly on class name
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.