Extension methods and classes I often find useful for C# development.
The extension methods are written to make the source code read more like a natural language, sometimes just wrapping an existing "negative" function into a more natural "not postive" name, eliminating the need for a "!", which doesn't read as naturally.
Attribute classes to validate properties in models.
AlphaOnlyAttribute: Check that a string only contains letters.UniqueItemsAttribute: Check that a collection property does not contain duplicate items.
This class creates a cache object with a generic key and generic value.
Clear: Remove all items from the cache.Get: Retrieves a value from the cache, or default, if not in the cache.Set: Adds or updates a value in the cache.Remove: Remove an entry fom the cache.RemoveExpiredItems: Removes all expired items from the cache.
This class provides extension methods for DataTables and DataSets
Get<T>: Gets a typed value from a column in a DataRow.HasColumn: Checks if a DataSet has a column with the specified name.HasRows: Checks if a DataSet has any rows.
This class provides extension methods for DateTime in C#.
EndOfDay: Returns the end of the day 23:59:59 for the provided date.EndOfMonth: Returns the date for the end of the month, at 23:59:59, for the provided date.IsWeekday: Checks if the given date is a weekday.IsWeekend: Checks if the given date is a weekend.NextDay: Gets the next day from the given date.PreviousDay: Gets the previous day from the given date.StartOfDay: Returns the start of the day 00:00:00 for the provided date.StartOfMonth: Returns the date for the start of the month, at 00:00:00, for the provided date.ToIso8601String: Converts the provided date to an ISO 8601 string.
This class provides extension methods for Enums in C#.
GetEnumDescription: Gets the description of an enum value.GetEnumDescriptions: Gets all descriptions of a specific enum type.GetEnumValues: Gets all values of a specific enum type.ParseEnum: Parses a string to an enum value.
This class provides extension methods for JSON manipulation in C#.
AsDeserializedJson: Deserializes the JSON string to an object of the specified type.AsSerializedJson: Serializes the specified object to a JSON string.GetValueFromJsonPath: Retrieves a value from a JSON string using a JSON path.GetValueFromJsonPath<T>: Retrieves a typed value from a JSON string using a JSON path.PrettyPrintJson(string): Formats the JSON string with indented formatting.PrettyPrintJson(object): Serializes the specified object to a JSON string with indented formatting.
This class provides LINQ-related extension methods in C#.
ForEach(IEnumerable): Applies an action to each element in the collection.ForEach(List): Applies an action to each element in the list.HasDuplicatePropertyValue<T, TProperty>: Checks if any objects have the same value in the specified property.HasDuplicatePropertyValue<T>: Checks if any objects have the same value in the specified string property.None: Checks if none of the elements in the collection satisfy the provided condition. If no condition is provided, it checks if the collection is empty.RandomElement: Returns a random element from the list.
This class provides extension methods for numerical operations in C#.
IsEven: Checks if the given integer is even.IsEvenlyDivisibleBy: Checks if the given integer is evenly divisible by another integer.IsNegative: Checks if the given integer is negative.IsOdd: Checks if the given integer is odd.IsPositive: Checks if the given integer is positive.
This class provides extension methods for objects in C#.
DeepClone: Creates a deep clone of the source object.HasCustomAttributeOfType: Checks if the property info has a custom attribute of a specific type.IsFloatingPointType: Checks if the object is of a floating point type.IsIntegerType: Checks if the object is of an integer type.IsNotNull: Checks if the object is not null.IsNotOfType(with Type parameter): Checks if the object is not of a specific type.IsNotOfType(for Type with baseType parameter): Checks if the type is not of a specific type.IsNotOfType<T>: Checks if the object is not of a specific type.IsNotOfType<T>(for Type): Checks if the type is not of a specific type.IsNotOfTypeOrSubclass(with Type parameter): Checks if the object is not of a specific type and not a subclass of that type.IsNotOfTypeOrSubclass(for Type with baseType parameter): Checks if the type is not of a specific type and not a subclass of that type.IsNotOfTypeOrSubclass<T>: Checks if the object is not of a specific type and not a subclass of that type.IsNotOfTypeOrSubclass<T>(for Type): Checks if the type is not of a specific type and not a subclass of that type.IsNull: Checks if the object is null.IsNumericType: Checks if the object is of a numeric type.IsOfType(with Type parameter): Checks if the object is of a specific type.IsOfType(for Type with baseType parameter): Checks if the type is of a specific type.IsOfType<T>: Checks if the object is of a specific type.IsOfType<T>(for Type): Checks if the type is of a specific type.IsOfTypeOrSubclass(with Type parameter): Checks if the object is of a specific type or a subclass of that type.IsOfTypeOrSubclass(for Type with baseType parameter): Checks if the type is of a specific type or a subclass of that type.IsOfTypeOrSubclass<T>: Checks if the object is of a specific type or a subclass of that type.IsOfTypeOrSubclass<T>(for Type): Checks if the type is of a specific type or a subclass of that type.
This class provides extension methods for string manipulations in C#.
ConvertFromString<T>: Converts a string to the specified type, if possible.DoesNotHaveText: Returns 'true' if the string is null, empty, or only contains whitespace.DoesNotMatch: Check if strings are not equal, using InvariantCultureIgnoreCase.HasText: Returns 'true' if the string is not null, empty, or only contains whitespace.IncludesTheWords: Checks if a string contains all the words in the specified array.IsDigitsOnly: Returns 'true' if the string only contains digits.Matches: Check if strings are equal, using InvariantCultureIgnoreCase.NullIfEmpty: Returns a null if the string is null, empty, or only contains whitespace.RemoveText: Removes all instances of the specified text from the string.Repeat: Returns a string with the text repeated the specified number of times.SplitPath: Convert a file path into an array of the individual directories.ToDigitsOnly: Returns a string with all non-digits removed.ToMaxLengthOf: Trims string to a maximum length, if it exceeds that lengthToStringWithLineFeeds: Converts an IEnumerable of strings to a single string with line feeds between each string.
This class provides extension methods for StringBuilder objects in C#.
All functions accept optional StringBuilderOptions object, which can be used to specify the behavior of the function.
The default value is StringBuilderOptions.None.
Append: Appends a string to the StringBuilder object.AppendFormatted: Appends a formatted string to the StringBuilder object.AppendIf: Appends text to the StringBuilder object, if a function evaluates to 'true'.AppendJoined: Appends a joined string to the StringBuilder object, using the specified separator.AppendLine: Appends a string and line feed to the StringBuilder object.AppendLineFormatted: Appends a formatted string and line feed to the StringBuilder object.AppendLineIf: Appends text and line feed to the StringBuilder object, if a function evaluates to 'true'.AppendLineIfNotEmpty: If the passed in line is not empty, it will be appended to the StringBuilder object.AppendLineJoined: Appends a joined string and line feed to the StringBuilder object, using the specified separator.
This class provides extension methods for XML handling in C#.
AttributeAsBool: Returns the value of the specified attribute as a boolean.AttributeAsDateTime: Returns the value of the specified attribute as a DateTime.AttributeAsInt: Returns the value of the specified attribute as an integer.AttributeAsString: Returns the value of the specified attribute as a string.ElementAsInt: Returns the inner text of the specified child element as an integer.ElementAsString: Returns the inner text of the specified child element as a string.
These classes can be used as base classes for models and handle property changed notification and logging of changed property values.
Base class that handles property changed notification.
-SetProperty<T>: Used to set a property's backing field and raise property changed event.
Base class that inherits from ObservableModel (to handle property change notification) and also logs the values of the changed properties. Implements IChangeTracking.
-AcceptChanges: Clears the PropertyChangeLog.
-PropertyChangeLog: ObservableCollection of properties values that were changed.
Static classes to handle common tasks.
Accepts a list of regex patterns and checks if a string matches any of them.
-MatchesAny: Checks if the string matches any of the regex patterns.
This class is designed to create cryptographically random numbers in C#.
GetNumberBetween: Generates a cryptographically random number between the specified minimum and maximum values.