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); }
/// <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); }