Sometimes, you want to see what actions (methods) and details (properties) an object has. This helps you understand or use it better.
Inspecting methods and properties in C Sharp (C#)
Type type = typeof(ClassName); // or Type type = objectInstance.GetType(); // To get methods MethodInfo[] methods = type.GetMethods(); // To get properties PropertyInfo[] properties = type.GetProperties();
typeof(ClassName) gets the type info from a class name.
GetType() gets the type info from an object instance.
string class.Type type = typeof(string);
MethodInfo[] methods = type.GetMethods();
foreach (var method in methods)
{
Console.WriteLine(method.Name);
}int object.var number = 123;
Type type = number.GetType();
PropertyInfo[] properties = type.GetProperties();
foreach (var prop in properties)
{
Console.WriteLine(prop.Name);
}This program creates a Person object and prints its public properties and methods. It shows how to inspect an object's details.
using System; using System.Reflection; class Person { public string Name { get; set; } public int Age { get; set; } public void SayHello() { Console.WriteLine($"Hello, my name is {Name}."); } private void SecretMethod() { } } class Program { static void Main() { Person p = new Person { Name = "Alice", Age = 30 }; Type type = p.GetType(); Console.WriteLine("Properties:"); foreach (var prop in type.GetProperties()) { Console.WriteLine(prop.Name); } Console.WriteLine("Methods:"); foreach (var method in type.GetMethods(BindingFlags.Public | BindingFlags.Instance)) { Console.WriteLine(method.Name); } } }
By default, GetMethods() returns public methods including inherited ones.
Use BindingFlags to control which methods or properties you want (public, private, static, instance).
Properties have getter and setter methods behind the scenes, which also appear in methods list.
Use typeof() or GetType() to get type info.
Use GetMethods() and GetProperties() to list methods and properties.
Inspecting helps understand and use objects better.
Practice
Solution
Step 1: Understand the difference between GetType() and typeof()
GetType()is called on an object instance to get its runtime type, whiletypeof()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 DQuick Check:
Object instance method for type info = GetType() [OK]
- Confusing typeof() with GetType()
- Using GetMethods() to get type info
- Thinking GetProperties() returns type
String type in C#?Solution
Step 1: Recall how to get methods from a type
Usetypeof(TypeName).GetMethods()to get all methods of a type.Step 2: Check each option's syntax
typeof(String).GetMethods() usestypeof(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 AQuick Check:
Get methods from type = typeof(Type).GetMethods() [OK]
- Calling GetMethods() on type name directly
- Mixing GetProperties() with GetMethods()
- Using GetType() with a type name instead of instance
var props = typeof(DateTime).GetProperties(); Console.WriteLine(props.Length);
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 BQuick Check:
DateTime properties count > 0 [OK]
- Assuming no properties means length 0
- Expecting compilation or runtime errors
- Confusing methods with properties
var typeInfo = "hello".GetType(); var methods = typeInfo.GetMethod();
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 calledGetMethod()without parameters; to get all methods, useGetMethods().Final Answer:
GetMethod() should be GetMethods() -> Option CQuick Check:
Use GetMethods() to get all methods [OK]
- Using GetMethod() without parameters
- Thinking GetType() is invalid on string
- Missing parentheses on method calls
Person and print their names. Which code snippet correctly does this?Solution
Step 1: Identify how to get properties of a type
Usetypeof(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 eachp.Nameto 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 AQuick Check:
Use typeof(Type).GetProperties() and loop to print names [OK]
- Calling GetProperties() on an instance
- Using GetMethods() instead of GetProperties()
- Calling GetProperties() directly on class name
Ready to prove it?
Pass the test and this pattern moves unknown
