Files
Umbraco-CMS/src/Umbraco.Core/IfExtensions.cs
shannon@ShandemVaio 23b2899101 Imports many of the useful extension methods from v5 that are also used in umbraMVCo to begin the
MVC integration.
Imported the unit tests associated with each of these imported classes.
2012-07-17 03:51:34 +06:00

68 lines
2.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Umbraco.Core
{
/// <summary>
/// Extension methods for 'If' checking like checking If something is null or not null
/// </summary>
public static class IfExtensions
{
/// <summary>The if not null.</summary>
/// <param name="item">The item.</param>
/// <param name="action">The action.</param>
/// <typeparam name="TItem">The type</typeparam>
public static void IfNotNull<TItem>(this TItem item, Action<TItem> action) where TItem : class
{
if (item != null)
{
action(item);
}
}
/// <summary>The if true.</summary>
/// <param name="predicate">The predicate.</param>
/// <param name="action">The action.</param>
public static void IfTrue(this bool predicate, Action action)
{
if (predicate)
{
action();
}
}
/// <summary>
/// Checks if the item is not null, and if so returns an action on that item, or a default value
/// </summary>
/// <typeparam name="TResult">the result type</typeparam>
/// <typeparam name="TItem">The type</typeparam>
/// <param name="item">The item.</param>
/// <param name="action">The action.</param>
/// <param name="defaultValue">The default value.</param>
/// <returns></returns>
public static TResult IfNotNull<TResult, TItem>(this TItem item, Func<TItem, TResult> action, TResult defaultValue = default(TResult))
where TItem : class
{
return item != null ? action(item) : defaultValue;
}
/// <summary>
/// Checks if the value is null, if it is it returns the value specified, otherwise returns the non-null value
/// </summary>
/// <typeparam name="TItem"></typeparam>
/// <param name="item"></param>
/// <param name="action"></param>
/// <returns></returns>
public static TItem IfNull<TItem>(this TItem item, Func<TItem, TItem> action)
where TItem : class
{
return item ?? action(item);
}
}
}