Realtime Applications of Extension Methods (C#)
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