public void Invoke(Action action)
        {
            SerializableLambda serializableAction = SerializableLambda.Create(action, _serializer);

            // Invoke the action in the other AppDomain and get the return value +
            // serialized version of the target in the other app domain.
            InvocationResult result = InvokeLambda(serializableAction);

            // Deserialize the other app domain's target and copy it to our local target.
            _serializer.Populate(result.SerializedTarget, action.Target);
        }
Exemple #2
0
 /// <summary>
 /// Creates a <see cref="SerializableLambda{T}" /> for a given <see cref="Func{TResult}" />.
 /// </summary>
 /// <typeparam name="TReturnValue">The type of the return value.</typeparam>
 /// <param name="func">The lambda.</param>
 /// <param name="serializer">The serializer used to serialize the target of the lambda.</param>
 /// <returns>
 /// A <see cref="SerializableLambda{T}" /> for the provided lambda.
 /// </returns>
 internal static SerializableLambda <TReturnValue> Create <TReturnValue>(
     Func <TReturnValue> func, ISerializer serializer)
 {
     return(SerializableLambda <TReturnValue> .Create(func, serializer));
 }
        public TResult Invoke <T1, TResult>(Func <T1, TResult> func, T1 parameter)
        {
            SerializableLambda <TResult> serializableFunc = SerializableLambda.Create(func, _serializer);

            return(InvokeSerializableLambda(serializableFunc, func.Target, parameter));
        }
        public T Invoke <T>(Func <T> func)
        {
            SerializableLambda <T> serializableFunc = SerializableLambda.Create(func, _serializer);

            return(InvokeSerializableLambda(serializableFunc, func.Target));
        }
        public void Invoke <T>(Action <T> action, T parameter)
        {
            SerializableLambda <Unit> serializableFunc = SerializableLambda.Create(action, _serializer);

            InvokeSerializableLambda(serializableFunc, action.Target, parameter);
        }