Example #1
0
        static PersistenceIOParticipantExtensions()
        {
#pragma warning disable IDE0007 // Use implicit type (https://github.com/dotnet/roslyn/issues/766)
            ParameterExpression instance        = Expression.Parameter(typeof(System.Activities.Persistence.PersistenceIOParticipant), "this");
            ParameterExpression readWriteValues = Expression.Parameter(typeof(IDictionary <XName, object>), nameof(readWriteValues));
            ParameterExpression writeOnlyValues = Expression.Parameter(typeof(IDictionary <XName, object>), nameof(writeOnlyValues));
            ParameterExpression timeout         = Expression.Parameter(typeof(TimeSpan), nameof(timeout));
            ParameterExpression callback        = Expression.Parameter(typeof(AsyncCallback), nameof(callback));
            ParameterExpression state           = Expression.Parameter(typeof(object), nameof(state));
            ParameterExpression result          = Expression.Parameter(typeof(IAsyncResult), nameof(result));
            MethodInfo          method;
#pragma warning restore IDE0007 // Use implicit type

            method = typeof(System.Activities.Persistence.PersistenceIOParticipant).GetMethod(
                PersistenceParticipantExtensions.IPersistencePipelineModuleFullName + nameof(BeginOnSave), BindingFlags.Instance | BindingFlags.NonPublic);
            beginOnSave = Expression.Lambda <BeginOnSaveDelegate>(
                Expression.Call(instance, method, readWriteValues, writeOnlyValues, timeout, callback, state), true, instance, readWriteValues, writeOnlyValues, timeout, callback, state).Compile();

            method = typeof(System.Activities.Persistence.PersistenceIOParticipant).GetMethod(
                PersistenceParticipantExtensions.IPersistencePipelineModuleFullName + nameof(EndOnSave), BindingFlags.Instance | BindingFlags.NonPublic);
            endOnSave = Expression.Lambda <EndOnSaveDelegate>(
                Expression.Call(instance, method, result), true, instance, result).Compile();

            method = typeof(System.Activities.Persistence.PersistenceIOParticipant).GetMethod(
                PersistenceParticipantExtensions.IPersistencePipelineModuleFullName + nameof(BeginOnLoad), BindingFlags.Instance | BindingFlags.NonPublic);
            beginOnLoad = Expression.Lambda <BeginOnLoadDelegate>(
                Expression.Call(instance, method, readWriteValues, timeout, callback, state), true, instance, readWriteValues, timeout, callback, state).Compile();

            method = typeof(System.Activities.Persistence.PersistenceIOParticipant).GetMethod(
                PersistenceParticipantExtensions.IPersistencePipelineModuleFullName + nameof(EndOnLoad), BindingFlags.Instance | BindingFlags.NonPublic);
            endOnLoad = Expression.Lambda <EndOnLoadDelegate>(
                Expression.Call(instance, method, result), true, instance, result).Compile();

            method = typeof(System.Activities.Persistence.PersistenceIOParticipant).GetMethod(
                PersistenceParticipantExtensions.IPersistencePipelineModuleFullName + nameof(Abort), BindingFlags.Instance | BindingFlags.NonPublic);
            abort = Expression.Lambda <AbortDelegate>(
                Expression.Call(instance, method), true, instance).Compile();
        }
        static PersistenceIOParticipantExtensions()
        {
            ParameterExpression instance = Expression.Parameter(typeof(System.Activities.Persistence.PersistenceIOParticipant), "this");
            ParameterExpression readWriteValues = Expression.Parameter(typeof(IDictionary<XName, object>), nameof(readWriteValues));
            ParameterExpression writeOnlyValues = Expression.Parameter(typeof(IDictionary<XName, object>), nameof(writeOnlyValues));
            ParameterExpression timeout = Expression.Parameter(typeof(TimeSpan), nameof(timeout));
            ParameterExpression callback = Expression.Parameter(typeof(AsyncCallback), nameof(callback));
            ParameterExpression state = Expression.Parameter(typeof(object), nameof(state));
            ParameterExpression result = Expression.Parameter(typeof(IAsyncResult), nameof(result));
            MethodInfo method;

            method = typeof(System.Activities.Persistence.PersistenceIOParticipant).GetMethod(
                PersistenceParticipantExtensions.IPersistencePipelineModuleFullName + nameof(BeginOnSave), BindingFlags.Instance | BindingFlags.NonPublic);
            beginOnSave = Expression.Lambda<BeginOnSaveDelegate>(
                Expression.Call(instance, method, readWriteValues, writeOnlyValues, timeout, callback, state), true, instance, readWriteValues, writeOnlyValues, timeout, callback, state).Compile();

            method = typeof(System.Activities.Persistence.PersistenceIOParticipant).GetMethod(
                PersistenceParticipantExtensions.IPersistencePipelineModuleFullName + nameof(EndOnSave), BindingFlags.Instance | BindingFlags.NonPublic);
            endOnSave = Expression.Lambda<EndOnSaveDelegate>(
                Expression.Call(instance, method, result), true, instance, result).Compile();

            method = typeof(System.Activities.Persistence.PersistenceIOParticipant).GetMethod(
                PersistenceParticipantExtensions.IPersistencePipelineModuleFullName + nameof(BeginOnLoad), BindingFlags.Instance | BindingFlags.NonPublic);
            beginOnLoad = Expression.Lambda<BeginOnLoadDelegate>(
                Expression.Call(instance, method, readWriteValues, timeout, callback, state), true, instance, readWriteValues, timeout, callback, state).Compile();

            method = typeof(System.Activities.Persistence.PersistenceIOParticipant).GetMethod(
                PersistenceParticipantExtensions.IPersistencePipelineModuleFullName + nameof(EndOnLoad), BindingFlags.Instance | BindingFlags.NonPublic);
            endOnLoad = Expression.Lambda<EndOnLoadDelegate>(
                Expression.Call(instance, method, result), true, instance, result).Compile();

            method = typeof(System.Activities.Persistence.PersistenceIOParticipant).GetMethod(
                PersistenceParticipantExtensions.IPersistencePipelineModuleFullName + nameof(Abort), BindingFlags.Instance | BindingFlags.NonPublic);
            abort = Expression.Lambda<AbortDelegate>(
                Expression.Call(instance, method), true, instance).Compile();
        }