Mono.Debugger.ExpressionEvaluator.GetProperty C# (CSharp) Method

GetProperty() public static method

public static GetProperty ( Thread thread, TargetPropertyInfo property, TargetStructObject instance, EvaluationFlags flags, int timeout, string &error, TargetObject &result ) : EvaluationResult
thread Thread
property Mono.Debugger.Languages.TargetPropertyInfo
instance Mono.Debugger.Languages.TargetStructObject
flags EvaluationFlags
timeout int
error string
result Mono.Debugger.Languages.TargetObject
return EvaluationResult
        public static EvaluationResult GetProperty(Thread thread, TargetPropertyInfo property,
							    TargetStructObject instance, EvaluationFlags flags,
							    int timeout, out string error, out TargetObject result)
        {
            error = null;

            RuntimeInvokeResult rti;
            try {
                RuntimeInvokeFlags rti_flags = RuntimeInvokeFlags.VirtualMethod;

                if ((flags & EvaluationFlags.NestedBreakStates) != 0)
                    rti_flags |= RuntimeInvokeFlags.NestedBreakStates;

                rti = thread.RuntimeInvoke (
                    property.Getter, instance, new TargetObject [0], rti_flags);

                if (!rti.CompletedEvent.WaitOne (timeout, false)) {
                    rti.Abort ();
                    result = null;
                    return EvaluationResult.Timeout;
                }

                if ((rti.TargetException != null) &&
                    (rti.TargetException.Type == TargetError.ClassNotInitialized)) {
                    result = null;
                    error = rti.ExceptionMessage;
                    return EvaluationResult.NotInitialized;
                }

                if (rti.Result is Exception) {
                    result = null;
                    error = ((Exception) rti.Result).Message;
                    return EvaluationResult.UnknownError;
                }

                result = (TargetObject) rti.ReturnObject;

                if (rti.ExceptionMessage != null) {
                    error = rti.ExceptionMessage;
                    return EvaluationResult.Exception;
                } else if (rti.ReturnObject == null) {
                    rti.Abort ();
                    return EvaluationResult.UnknownError;
                }

                return EvaluationResult.Ok;
            } catch (TargetException ex) {
                result = null;
                error = ex.ToString ();
                return EvaluationResult.UnknownError;
            }
        }