public static UnaryExpression TypeAs(Expression expression, Type type)
{
RequiresCanRead(expression, nameof(expression));
ContractUtils.RequiresNotNull(type, nameof(type));
TypeUtils.ValidateType(type, nameof(type));
if (type.GetTypeInfo().IsValueType && !type.IsNullableType())
{
throw Error.IncorrectTypeForTypeAs(type, nameof(type));
}
return new UnaryExpression(ExpressionType.TypeAs, expression, type, null);
}