Lokesh Darapureddy: Realtime Applications of Extension Methods (C#)            
       
                                                               

Wednesday, 19 June 2024

                               
                                                                   

                            Realtime Applications of Extension Methods (C#)                        

                                                               
                       
Extension Methods in ASP.NET Core MVC

Extension Methods in ASP.NET Core MVC

Extension methods are a powerful feature in C# that can significantly enhance the development experience in ASP.NET Core MVC applications. Here are some real-time use cases:

1. Model Validation

public static class ModelValidationExtensions
{
    public static bool IsValidEmail(this string email)
    {
        var emailPattern = @"^[^@\s]+@[^@\s]+\.[^@\s]+$";
        return Regex.IsMatch(email, emailPattern);
    }
}

// Usage in a controller
if (!model.Email.IsValidEmail())
{
    ModelState.AddModelError("Email", "Invalid email format.");
}

2. String Manipulation and Formatting

public static class StringExtensions
{
    public static string ToTitleCase(this string str)
    {
        return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(str.ToLower());
    }
}

// Usage in a view or controller
var title = "hello world".ToTitleCase(); // "Hello World"

3. Enumerable Extensions

public static class EnumerableExtensions
{
    public static IEnumerable Paginate(this IEnumerable source, int pageNumber, int pageSize)
    {
        return source.Skip((pageNumber - 1) * pageSize).Take(pageSize);
    }
}

// Usage in a controller
var paginatedResults = items.Paginate(pageNumber, pageSize);

4. HttpContext and HttpRequest Extensions

public static class HttpContextExtensions
{
    public static string GetUserIpAddress(this HttpContext context)
    {
        return context.Connection.RemoteIpAddress?.ToString();
    }
}

// Usage in a controller
var ipAddress = HttpContext.GetUserIpAddress();

5. Configuration and Settings

public static class ConfigurationExtensions
{
    public static string GetConnectionString(this IConfiguration config, string name)
    {
        return config.GetSection("ConnectionStrings")[name];
    }
}

// Usage in a service or controller
var connectionString = Configuration.GetConnectionString("DefaultConnection");

6. DateTime Extensions

public static class DateTimeExtensions
{
    public static string ToFriendlyDate(this DateTime dateTime)
    {
        return dateTime.ToString("dddd, dd MMMM yyyy");
    }
}

// Usage in a view or controller
var friendlyDate = DateTime.Now.ToFriendlyDate(); // "Monday, 20 June 2024"

7. Identity and Authentication

public static class IdentityExtensions
{
    public static string GetUserId(this ClaimsPrincipal user)
    {
        return user.FindFirstValue(ClaimTypes.NameIdentifier);
    }
}

// Usage in a controller
var userId = User.GetUserId();

8. Querying and Filtering

public static class QueryableExtensions
{
    public static IQueryable ActiveUsers(this IQueryable query)
    {
        return query.Where(u => u.IsActive);
    }
}

// Usage in a repository or service
var activeUsers = dbContext.Users.ActiveUsers();

9. HttpResponse Extensions

public static class HttpResponseExtensions
{
    public static void SetCookie(this HttpResponse response, string key, string value, int? expireTime)
    {
        CookieOptions option = new CookieOptions();
        if (expireTime.HasValue)
            option.Expires = DateTime.Now.AddMinutes(expireTime.Value);
        else
            option.Expires = DateTime.Now.AddMilliseconds(10);

        response.Cookies.Append(key, value, option);
    }
}

// Usage in a controller
Response.SetCookie("TestCookie", "TestValue", 30);
                   
                                   
               
                                           

0 Comments:

                       
                                                                                                           
                       

                           

Post a Comment

                       

                       

Subscribe to Post Comments [Atom]

                                       

                        << Home