public object InvokeDelegate(ObjectIdentifier identifier, object[] args) { var @delegate = (Delegate)QueryVault().Query(identifier); var result = @delegate.DynamicInvoke(DomainPipeline.UnpackArgs(identifier.PipelineId, args)); return(DomainPipeline.PackArgs(identifier.PipelineId, new[] { @delegate.Method.ReturnType }, new[] { result }).First()); }
public ObjectIdentifier CreateObjectReflex(Type objectType) { var identifier = new ObjectIdentifier(_pipelineId); var reflex = DomainPipeline.CreateReflexForObject(identifier, objectType); QueryVault().Register(identifier, reflex); return(identifier); }
public object InvokeObjectMethod(ObjectIdentifier identifier, string methodName, IEnumerable <Type> methodParameters, object[] args) { var vault = QueryVault(); var instance = vault.Query(identifier); var instanceType = instance.GetType(); var method = instanceType.GetSimilarMethod(methodName, methodParameters.ToArray()); var result = method.Invoke(instance, DomainPipeline.UnpackArgs(identifier.PipelineId, args)); return(DomainPipeline.PackArgs(identifier.PipelineId, new[] { method.ReturnType }, new[] { result }).First()); }