Beispiel #1
0
        private ObjectDescriptor ResolveDynamicObject(DynamicObjectRequest dynamicObjectRequest,
                                                      DynamicObjectResponse response, ObjectDescriptor objectDescriptor)
        {
            var args = new ResolvingBoundObjectArgs(dynamicObjectRequest.Name);

            try
            {
                ResolvingBoundObject?.Invoke(this, args);

                if (args.Object == null)
                {
                    return(null);
                }

                if (args.Disposable && args.Object is IDisposable)
                {
                    objectDescriptor =
                        Repository.AddDisposableBinding(dynamicObjectRequest.Name, (IDisposable)args.Object);
                }
                else
                {
                    objectDescriptor = Repository.AddBinding(dynamicObjectRequest.Name, args.Object);
                }

                response.Success = true;
            }
            catch (Exception e)
            {
                Log.ErrorException("ResolveDynamicObject", e);
                response.Exception = e.Message;
            }

            return(objectDescriptor);
        }
Beispiel #2
0
        private void OnDyanmicObjectRequest(DynamicObjectRequest dynamicObjectRequest)
        {
            var response = new DynamicObjectResponse
            {
                ExecutionId = dynamicObjectRequest.ExecutionId
            };

            if (!Repository.TryGetObjectByName(dynamicObjectRequest.Name, out var objectDescriptor))
            {
                objectDescriptor = ResolveDynamicObject(dynamicObjectRequest, response, objectDescriptor);
            }
            else
            {
                response.Success = true;
            }

            response.ObjectDescriptor = objectDescriptor;
            connection.Send(new RpcRequest <TMarshal>
            {
                DynamicObjectResult = response
            });
        }