Extension Class and Method in C#

0

 In C#, extension methods allow you to "add" methods to existing types without modifying the original type or using inheritance. These methods are defined in a static class, and the method itself must also be static, with the first parameter preceded by the this keyword to indicate the type it's extending.


🔹 Syntax of Extension Method

csharp

public static class ExtensionClass { public static returnType MethodName(this TypeToExtend obj, other parameters) { // method body } }

🔹 Example 1: Extension Method on string Type

csharp

// Extension class public static class StringExtensions { public static int WordCount(this string str) { if (string.IsNullOrWhiteSpace(str)) return 0; return str.Split(' ').Length; } } // Usage class Program { static void Main() { string msg = "Hello from TechForest Software"; int count = msg.WordCount(); // Using extension method Console.WriteLine("Word Count: " + count); } }

🔹 Example 2: Extension Method on Custom Class

csharp

public class Employee { public string Name { get; set; } public double Salary { get; set; } } // Extension class public static class EmployeeExtensions { public static void DisplayInfo(this Employee emp) { Console.WriteLine($"Name: {emp.Name}, Salary: {emp.Salary}"); } public static bool IsHighEarner(this Employee emp, double threshold) { return emp.Salary > threshold; } } // Usage class Program { static void Main() { Employee e = new Employee { Name = "Shiva", Salary = 85000 }; e.DisplayInfo(); // Extension method bool isHigh = e.IsHighEarner(80000); Console.WriteLine("Is High Earner: " + isHigh); } }


🔍 Reflection in C# — Explained Simply

Reflection in C# is a powerful feature that allows you to inspect metadata about assemblies, types, and members (like properties, methods, fields) at runtime. It belongs to the System.Reflection namespace.


✅ Use Cases of Reflection

  • Get type information at runtime

  • Inspect methods, properties, and fields

  • Create instances of types dynamically

  • Invoke methods dynamically

  • Used in serialization, unit testing frameworks, dependency injection, etc.


📦 Required Namespace

csharp

using System; using System.Reflection;

🔹 Simple Example: Inspecting a Class Using Reflection

csharp

using System; using System.Reflection; public class Student { public int Id { get; set; } public string Name { get; set; } public void Display() { Console.WriteLine($"Id: {Id}, Name: {Name}"); } } class Program { static void Main() { // Get type info using typeof Type type = typeof(Student); Console.WriteLine("Class Name: " + type.Name); Console.WriteLine("\n--- Properties ---"); foreach (PropertyInfo prop in type.GetProperties()) { Console.WriteLine("Property: " + prop.Name); } Console.WriteLine("\n--- Methods ---"); foreach (MethodInfo method in type.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly)) { Console.WriteLine("Method: " + method.Name); } } }

🧩 Partial Class in C# – Simple Explanation with Example

A partial class in C# allows you to split the definition of a class into multiple files. When the application compiles, all the parts are combined into a single class.


✅ Why Use Partial Classes?

  • Helpful when working on large classes.

  • Supports code separation (e.g., designer code in one file, logic in another).

  • Allows multiple developers to work on the same class simultaneously.

  • Used heavily in WinForms, ASP.NET Web Forms, and Entity Framework.


🧪 Syntax

File 1: Student1.cs

csharp

public partial class Student { public int Id { get; set; } }

File 2: Student2.cs

csharp
public partial class Student { public string Name { get; set; } public void Display() { Console.WriteLine($"ID: {Id}, Name: {Name}"); } }

File 3: Program.cs

csharp

using System; class Program { static void Main() { Student s = new Student(); s.Id = 101; s.Name = "Shiva"; s.Display(); // Output: ID: 101, Name: Shiva } }

📘 Key Rules

  • All parts must use the partial keyword.

  • All parts must be in the same namespace and same assembly.

  • Access modifiers (like public) must be consistent.

Post a Comment

0Comments

POST Answer of Questions and ASK to Doubt

Post a Comment (0)