C# Extension Methods là gì? Extension Methods làm mã của bạn gọn gàng hơn, an toàn hơn và dễ rất bảo trì hơn


Extension Methods là một phương pháp mở rộng trong C# tính năng mạnh mẽ được tận dụng và thường được sử dụng. Sử dụng Extension trong các dự án của bạn để làm cho mã của bạn gọn gàng hơn, an toàn hơn và dễ rất bảo trì hơn.


Static Extension Methods là gì?

Static Extension Methods là một tính năng rất hay trong C# cũng như các ngôn ngữ .NET khác. Nó là những phương thức mở rộng cho các lớp trong ngôn ngữ. Nó sẽ thêm một số phương thức (hay hành vi) vào lớp mà bạn không cần kế thừa để mở rộng lớp đó. Và không có sự khác nhau giữa việc gọi phương thức bình thường của lớp và các phương thức mở rộng static(static extension methods).

Bạn có lớp string thì các phương thức mặc định sẽ là: .ToString(), .ToLower() ... Bạn muốn thêm một phương thức mới: .ToNumber(), .ToDatetime() .. thì Extension Methods giúp bạn thực hiện việc đó.

Quy tắc khi định nghĩa và sử dụng extension method

  • Static class, static method
  • this keyword (kiểu của đối tượng được sử dụng). Tham số này sẽ được bỏ qua khi bạn gọi extension method
public static class [YOUR_CLASS_NAME]
{
    public static [RETURN_TYPE] [METHOD_NAME](this [TYPE_NAME] s)
    {
       // TODO: Write code here
    }
}
/*
---[YOUR_CLASS_NAME]---: tên lớp bất kỳ tùy theo cách đặt của bạn.
---[RETURN_TYPE]---: kiểu dữ liệu trả về.
---[METHOD_NAME]---: tên phương thức.
---[TYPE_NAME]---: kiểu mà [METHOD_NAME] sẽ được thêm vào.
*/

Áp dụng Extension Method ở đâu

  • Classes & structs
  • Interfaces & collections
  • Object

Định nghĩa Extension Method ở đâu

  • Any assembly, any class
  • Any namespace – including piggybacking

Làm thể nào sử dụng Extension Method

  • Add a reference to the assembly
  • Import the namespace
  • With IntelliSense

Ví dụ 

public static class ExtensionsString
{
    public static bool IsNumber(this string s)
    {
        int n;
        return int.TryParse(s, out n);
    }
}

class Program
{
    static void Main(string[] args)
    {
        var s1 = "0909";
        var s2 = "mastercode.vn";
        Console.WriteLine(s1.IsNumber()); // Output: True
        Console.WriteLine(s2.IsNumber()); // Output: False

    }
}

Kết luận

Trong dự án thực tế các bạn nên tạo một thư viện chứa đựng các Static Extension Methods riêng để tái sử dụng lại cho các dự án hay ứng dụng sau này của các bạn. Ngoài ra các bạn có thể tham khảo thư viện mở hữu ích về extension method tại : http://www.extensionmethod.net/

Extension Methed được ứng dụng rộng rãi rất nhiều nơi, mình hay áp dụng trong Asp.net MVC với việc chuyển đổi từ Model sang ModelView và ngược lại từ ModelView sang Model

Chia sẽ bài viết :


Bài viết liên quan

Bài 1 Tổng quan về SQL Server

SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ (Relational Database Management System (RDBMS) ) sử dụng câu lệnh SQL (Transact-SQL) để trao đổi d ...