Common code shared between our projects, available for all to use.
A collection of useful extension methods for caching, enum handling, geographic calculations, JSON serialization, and string manipulation.
Install the package via NuGet:
dotnet add package Toodle.CommonExtensions
The CacheExtensions
class provides methods for generating cache keys:
using Toodle.CommonExtensions.Cache;
var person = new Person { Id = 1, Name = "John" };
string key = person.ToCacheKeyFast(); // Returns "Person_[hash]"
string keyWithPrefix = person.ToCacheKeyFast("App1"); // Returns "App1_Person_[hash]"
Note: Hash codes from ToCacheKeyFast
are not guaranteed to be consistent across application restarts.
using Toodle.CommonExtensions.Cache;
var person = new Person { Id = 1, Name = "John" };
string key = person.ToCacheKeyStable(); // Returns "Person_[hash]"
string keyWithPrefix = person.ToCacheKeyStable("App1"); // Returns "App1_Person_[hash]"
Uses FNV-1a hash algorithm to ensure consistency across application restarts.
The EnumExtensions
class provides methods for working with enums:
using Toodle.CommonExtensions;
public enum Status { Active, Inactive, Pending }
// Get all enum values sorted alphabetically
List<Status> allStatuses = EnumExtensions.GetEnumValues<Status>();
// Get enum values excluding specific items
List<Status> filteredStatuses = EnumExtensions.GetEnumValues<Status>(
new[] { Status.Inactive }
);
The GeographyHelper
class provides methods for geographic calculations:
using Toodle.CommonExtensions.Helpers;
// Calculate distance between London and Paris
double distance = GeographyHelper.GetDistance(
51.5074, -0.1278, // London coordinates
48.8566, 2.3522 // Paris coordinates
);
// Returns distance in meters using the Haversine formula
The JsonExtensions
class provides methods for JSON serialization:
using Toodle.CommonExtensions.Json;
var person = new Person { Name = "John", Age = 30 };
// Basic serialization
string json = person.ToJson();
// Serialization with custom options
var options = new JsonSerializerOptions
{
WriteIndented = true
};
string prettyJson = person.ToJson(options);
The StringExtensions
class provides string manipulation methods:
using Toodle.CommonExtensions.String;
string initials = "hello world".ToInitials(); // Returns "HW"
string multipleWords = "United Kingdom".ToInitials(); // Returns "UK"
string multipleSpaces = " multiple spaces ".ToInitials(); // Returns "MS"
using Toodle.CommonExtensions.String;
string cleaned = "Hello123World!".RemoveNonAlphabeticCharacters(); // Returns "HelloWorld"
string numbersOnly = "12345".RemoveNonAlphabeticCharacters(); // Returns ""
string withSpaces = "Hello World!".RemoveNonAlphabeticCharacters(); // Returns "HelloWorld"
A metadata, breadcrumb and resource manager for ASP.NET Core websites.
dotnet add package Sixpoints.PageOptimizer
builder.Services.AddMetaData(
siteName: "My Website",
baseUrl: "https://example.com",
locale: "en-US"
);
@addTagHelper *, MetaData.AspNetCore
<head>
<meta-data-tags />
</head>
public class ArticleController : Controller
{
private readonly IMetaDataService _metaDataService;
public ArticleController(IMetaDataService metaDataService)
{
_metaDataService = metaDataService;
}
public IActionResult Article(string slug)
{
_metaDataService
.SetMetaTitle("Article Title")
.SetMetaDescription("Article description")
.AddBreadCrumb("Category", "/category")
.AddBreadCrumb("Article Title")
.SetCanonicalUrl($"/article/{slug}");
return View();
}
}