AgentMulder.Containers.Autofac.Patterns.RegisterLambdaExpression.IsResolvedToObject C# (CSharp) Метод

IsResolvedToObject() приватный Метод

private IsResolvedToObject ( ICSharpExpression expression ) : bool
expression ICSharpExpression
Результат bool
        private bool IsResolvedToObject(ICSharpExpression expression)
        {
            var invocationExpression = expression as IInvocationExpression;
            if (invocationExpression != null)
            {
                if (invocationExpression.Reference != null)
                {
                    var result = invocationExpression.Reference.Resolve().Result.DeclaredElement as IParametersOwner;
                    if (result != null)
                    {
                        return result.ReturnType.IsObject();
                    }
                }
            }

            var castExpression = expression as ICastExpression;
            if (castExpression != null)
            {
                var typeUsage = castExpression.TargetType as IPredefinedTypeUsage;
                if (typeUsage != null)
                {
                    return IsReferenceToSystemObject(typeUsage.ScalarPredefinedTypeName);
                }
            }
            var asExpression = expression as IAsExpression;
            if (asExpression != null)
            {
                var typeUsage = asExpression.TypeOperand as IPredefinedTypeUsage;
                if (typeUsage != null)
                {
                    return IsReferenceToSystemObject(typeUsage.ScalarPredefinedTypeName);
                }
            }

            var objectCreationExpression = expression as IObjectCreationExpression;
            if (objectCreationExpression != null)
            {
                return IsReferenceToSystemObject(objectCreationExpression.TypeReference as IPredefinedTypeReference);
            }

            return false;
        }