Object - IsAssignableFrom

An object extension method that query if '@this' is assignable from.

Try it

public static void Main()
{
   var stringObject = (object) "FizzBuzz";

   // C# Extension Method: Object - IsAssignableFrom
   bool result1 = stringObject.IsAssignableFrom(typeof (string)); // return true;
   bool result2 = stringObject.IsAssignableFrom<string>(); // return true;
   bool result3 = stringObject.IsAssignableFrom<object>(); // return false;
   bool result4 = stringObject.IsAssignableFrom<int>(); // return false;
	
   Console.WriteLine("IsAssignableFrom(typeof (string)): {0}", result1);
   Console.WriteLine("IsAssignableFrom<string>(): {0}", result2);
   Console.WriteLine("IsAssignableFrom<object>(): {0}", result3);
   Console.WriteLine("IsAssignableFrom<int>(): {0}", result4);
}

View Source
using System;

public static partial class Extensions
{
    /// <summary>
    ///     An object extension method that query if '@this' is assignable from.
    /// </summary>
    /// <typeparam name="T">Generic type parameter.</typeparam>
    /// <param name="this">The @this to act on.</param>
    /// <returns>true if assignable from, false if not.</returns>
    public static bool IsAssignableFrom<T>(this object @this)
    {
        Type type = @this.GetType();
        return type.IsAssignableFrom(typeof (T));
    }

    /// <summary>
    ///     An object extension method that query if '@this' is assignable from.
    /// </summary>
    /// <param name="this">The @this to act on.</param>
    /// <param name="targetType">Type of the target.</param>
    /// <returns>true if assignable from, false if not.</returns>
    public static bool IsAssignableFrom(this object @this, Type targetType)
    {
        Type type = @this.GetType();
        return type.IsAssignableFrom(targetType);
    }
}