GlueViewOfficialPlugins.Scripting.ExpressionParser.GetCaller C# (CSharp) Method

GetCaller() private method

private GetCaller ( ICSharpCode expression, CodeContext codeContext ) : object
expression ICSharpCode
codeContext GlueView.Scripting.CodeContext
return object
        private object GetCaller(ICSharpCode.NRefactory.CSharp.Expression expression, CodeContext codeContext)
        {
            object caller;
            if (expression is MemberReferenceExpression)
            {
                MemberReferenceExpression mre = expression as MemberReferenceExpression;


                caller = EvaluateExpression(mre.Target, codeContext);

                if (caller == null)
                {
                    Type type = TypeManager.GetTypeFromString(mre.Target.GetText());
                    if (type != null)
                    {
                        TypeReference typeReference = new TypeReference();
                        typeReference.Type = type;

                        caller = typeReference;
                    }
                        
                }


                if (caller == null)
                {
                    caller = codeContext.ContainerInstance;
                }


                return caller;


            }
            else if (expression is InvocationExpression)
            {
                return codeContext.ContainerInstance;
            }
            else if (expression is IdentifierExpression)
            {
                return codeContext.ContainerInstance;
            }
            else
            {
                return null;

            }
        }