VBSharper.Plugins.Refactorings.SharedToExtension.SharedToExtensionWorkflow.IsAvailable C# (CSharp) Method

IsAvailable() public method

public IsAvailable ( IDataContext context ) : bool
context IDataContext
return bool
        public override bool IsAvailable(IDataContext context)
        {
            IList<ITypeMember> typeMembers;
            ITypeElement ownerType;
            var moveStaticMembersIsAvailable = IsAvailable(context, out typeMembers, out ownerType);
            if (!moveStaticMembersIsAvailable) return false;
            Methods = new List<IMethod>();

            foreach (var typeMember in typeMembers) {
                var method = typeMember != null ? typeMember as IMethod : null;
                if (method == null) return false;

                // Do a quick check to see if Extension Methods are allowed.
                var methodDeclaration = method.GetDeclarations().FirstOrDefault();
                if (methodDeclaration != null) {
                    var treeNode = methodDeclaration.CreateTreeElementPointer().GetTreeNode();
                    if (treeNode != null && !treeNode.IsVB9Supported()) return false;
                }

                if (!method.IsStatic || method.Parameters.None() || method.Parameters.First().Kind != ParameterKind.VALUE) return false;
                if (method.IsExtensionMethod ^ Direction == WorkflowDirection.ExtensionToShared) return false;

                Methods.Add(method);
            }

            return true;
        }