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
csharppublic 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 partialkeyword.
 
- 
All parts must be in the same namespace and same assembly. 
- 
Access modifiers (like public) must be consistent.
 
%20(1).jpg)
 
 
 
 
0 تعليقات
POST Answer of Questions and ASK to Doubt