aboutsummaryrefslogtreecommitdiffstatsci
path: root/src/ExtensionsMethods.cs
diff options
context:
space:
mode:
authorjpbruyere <jp.bruyere@hotmail.com>2016-02-03 18:19:30 +0100
committerjpbruyere <jp.bruyere@hotmail.com>2016-02-03 18:19:30 +0100
commit9e09e0561baf7a898c308180d142cecea9e56b8f (patch)
tree0512e610a9297397128e64760a2db0076d8047e0 /src/ExtensionsMethods.cs
parent46560c8595bc6a36b51493214cbbff89c0694ef5 (diff)
Cast extention method for Type, used in binding resolution
Diffstat (limited to 'src/ExtensionsMethods.cs')
-rw-r--r--src/ExtensionsMethods.cs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/ExtensionsMethods.cs b/src/ExtensionsMethods.cs
index af756a78..19193e92 100644
--- a/src/ExtensionsMethods.cs
+++ b/src/ExtensionsMethods.cs
@@ -19,6 +19,7 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
using System;
+using System.Linq.Expressions;
namespace Crow
{
@@ -38,6 +39,18 @@ namespace Crow
handler(sender, e);
}
}
+ /// <summary>
+ /// Type Extension method for Casting
+ /// </summary>
+ public static object Cast(this Type Type, object data)
+ {
+ var DataParam = Expression.Parameter(typeof(object), "data");
+ var Body = Expression.Block(Expression.Convert(Expression.Convert(DataParam, data.GetType()), Type));
+
+ var Run = Expression.Lambda(Body, DataParam).Compile();
+ var ret = Run.DynamicInvoke(data);
+ return ret;
+ }
}
}