diff options
| author | jpbruyere <jp.bruyere@hotmail.com> | 2016-02-03 18:19:30 +0100 |
|---|---|---|
| committer | jpbruyere <jp.bruyere@hotmail.com> | 2016-02-03 18:19:30 +0100 |
| commit | 9e09e0561baf7a898c308180d142cecea9e56b8f (patch) | |
| tree | 0512e610a9297397128e64760a2db0076d8047e0 /src/ExtensionsMethods.cs | |
| parent | 46560c8595bc6a36b51493214cbbff89c0694ef5 (diff) | |
Cast extention method for Type, used in binding resolution
Diffstat (limited to 'src/ExtensionsMethods.cs')
| -rw-r--r-- | src/ExtensionsMethods.cs | 13 |
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; + } } } |