Je vyžadována podpora jazyka JavaScript
Některé stránky na tomto webu vyžadují podporu jazyka JavaScript. Váš webový prohlížeč jazyk JavaScript nepodporuje nebo jazyk JavaScript není povolen.
Chcete-li zjistit, zda webový prohlížeč podporuje jazyk JavaScript nebo jazyk JavaScript chcete povolit, přečtěte si nápovědu k vašemu webovému prohlížeči.
DynamicConverter.cs
Download fileToto je zdrojový kód souboru DynamicConverter.cs
Class that allows to perform a cast of any value type to the specific type without inserting boxing/unboxing operations.
using System; using System.Linq.Expressions; namespace IMP.Shared { internal static class DynamicConverter<TTo> { #region member types definition private static class ConverterFrom<TFrom> { #region member varible and default property initialization internal static readonly Func<TFrom, TTo> s_Converter = CreateExpression<TFrom, TTo>(value => Expression.Convert(value, typeof(TTo))); #endregion #region private member functions /// <summary> /// Create a function delegate representing an operation /// </summary> /// <typeparam name="T">The parameter type</typeparam> /// <typeparam name="TResult">The return type</typeparam> /// <param name="body">Body factory</param> /// <returns>Compiled function delegate</returns> private static Func<T, TResult> CreateExpression<T, TResult>(Func<ParameterExpression, Expression> body) { var param = Expression.Parameter(typeof(T), "value"); try { return Expression.Lambda<Func<T, TResult>>(body(param), param).Compile(); } catch (Exception ex) { string msg = ex.Message; //avoid capture of ex itself return _ => { throw new InvalidOperationException(msg); }; } } #endregion } #endregion #region action methods /// <summary> /// Performs a conversion between the given types; this will throw /// an InvalidOperationException if the type T does not provide a suitable cast, or for /// Nullable<TInner> if TInner does not provide this cast. /// </summary> public static TTo Convert<TFrom>(TFrom valueToConvert) { return ConverterFrom<TFrom>.s_Converter(valueToConvert); } #endregion } }