Why can't you just invoke a method like 

static Cast<T>(Type from)
{
    var temp = (T)from;
}

and check for an appropriate exception?