private string GetEventReferenceText(IEventReference value)
 {
     using (StringWriter writer = new StringWriter(CultureInfo.InvariantCulture))
     {
         writer.Write(value.Name);
         writer.Write(":");
         writer.Write(this.GetTypeText(value.EventType));
         return(writer.ToString());
     }
 }
Esempio n. 2
0
        public static IMethodDeclaration GetAddMethod(IEventReference value)
        {
            IEventDeclaration eventDeclaration = value.Resolve();
            if (eventDeclaration.AddMethod != null)
            {
                return eventDeclaration.AddMethod.Resolve ();
            }

            return null;
        }
        public static IMethodDeclaration GetInvokeMethod(IEventReference value)
        {
            IEventDeclaration eventDeclaration = value.Resolve();

            if (eventDeclaration.InvokeMethod != null)
            {
                return(eventDeclaration.InvokeMethod.Resolve());
            }

            return(null);
        }
 public void Visit(IEventReference eventRef, SSTPrintingContext c)
 {
     if (eventRef.EventName.IsStatic)
     {
         c.Type(eventRef.EventName.DeclaringType);
     }
     else
     {
         c.Text(eventRef.Reference.Identifier);
     }
     c.Text(".").Text(eventRef.EventName.Name);
 }
Esempio n. 5
0
        public static MethodVisibility GetVisibility(IEventReference value)
        {
            IMethodDeclaration addMethod    = GetAddMethod(value);
            IMethodDeclaration removeMethod = GetRemoveMethod(value);
            IMethodDeclaration invokeMethod = GetInvokeMethod(value);

            if (((addMethod != null) && (removeMethod != null)) && (invokeMethod != null))
            {
                if ((addMethod.Visibility == removeMethod.Visibility) && (addMethod.Visibility == invokeMethod.Visibility))
                {
                    return(addMethod.Visibility);
                }
            }
            else if ((addMethod != null) && (removeMethod != null))
            {
                if (addMethod.Visibility == removeMethod.Visibility)
                {
                    return(addMethod.Visibility);
                }
            }
            else if ((addMethod != null) && (invokeMethod != null))
            {
                if (addMethod.Visibility == invokeMethod.Visibility)
                {
                    return(addMethod.Visibility);
                }
            }
            else if ((removeMethod != null) && (invokeMethod != null))
            {
                if (removeMethod.Visibility == invokeMethod.Visibility)
                {
                    return(removeMethod.Visibility);
                }
            }
            else
            {
                if (addMethod != null)
                {
                    return(addMethod.Visibility);
                }
                if (removeMethod != null)
                {
                    return(removeMethod.Visibility);
                }
                if (invokeMethod != null)
                {
                    return(invokeMethod.Visibility);
                }
            }
            return(MethodVisibility.Public);
        }
        public static IMethodDeclaration GetInvokeMethod(IEventReference value)
        {
            IEventDeclaration  eventDeclaration = value.Resolve();
            IMethodDeclaration result;

            if (eventDeclaration.InvokeMethod != null)
            {
                result = eventDeclaration.InvokeMethod.Resolve();
            }
            else
            {
                result = null;
            }
            return(result);
        }
        public void Unsubscribe(IEventReference eventReference)
        {
            EventReference typedEventReference = eventReference as EventReference;

            if (eventReference == null)
            {
                return;
            }

            bool found = eventHandlers.TryGetValue(typedEventReference.Type, out List <EventReference> eventReferenceList);

            if (!found)
            {
                return;
            }

            eventReferenceList.Remove(typedEventReference);
        }
Esempio n. 8
0
        public static bool IsStatic(IEventReference value)
        {
            bool flag = false;

            if (GetAddMethod(value) != null)
            {
                flag |= GetAddMethod(value).Static;
            }
            if (GetRemoveMethod(value) != null)
            {
                flag |= GetRemoveMethod(value).Static;
            }
            if (GetInvokeMethod(value) != null)
            {
                flag |= GetInvokeMethod(value).Static;
            }
            return(flag);
        }
        public static bool IsVisible(IEventReference value, IVisibilityConfiguration visibility)
        {
            bool result;

            if (IsVisible(value.DeclaringType, visibility))
            {
                switch (GetVisibility(value))
                {
                case MethodVisibility.PrivateScope:
                case MethodVisibility.Private:
                    result = visibility.Private;
                    break;

                case MethodVisibility.FamilyAndAssembly:
                    result = visibility.FamilyAndAssembly;
                    break;

                case MethodVisibility.Assembly:
                    result = visibility.Assembly;
                    break;

                case MethodVisibility.Family:
                    result = visibility.Family;
                    break;

                case MethodVisibility.FamilyOrAssembly:
                    result = visibility.FamilyOrAssembly;
                    break;

                case MethodVisibility.Public:
                    result = visibility.Public;
                    break;

                default:
                    throw new NotSupportedException();
                }
            }
            else
            {
                result = false;
            }
            return(result);
        }
Esempio n. 10
0
        /// <summary>
        /// Compare this event reference to another object
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public int CompareTo(object obj)
        {
            IEventReference reference = obj as IEventReference;

            if (reference == null)
            {
                throw new NotSupportedException();
            }
            int ret = this.DeclaringType.CompareTo(reference.DeclaringType);

            if (0 == ret)
            {
                ret = String.Compare(this.Name, reference.Name, StringComparison.InvariantCulture);
            }
            if (0 == ret)
            {
                ret = this.EventType.CompareTo(reference.EventType);
            }
            return(ret);
        }
        public static bool IsStatic(IEventReference value)
        {
            bool isStatic = false;

            if (Helper.GetAddMethod(value) != null)
            {
                isStatic |= Helper.GetAddMethod(value).Static;
            }

            if (Helper.GetRemoveMethod(value) != null)
            {
                isStatic |= Helper.GetRemoveMethod(value).Static;
            }

            if (Helper.GetInvokeMethod(value) != null)
            {
                isStatic |= Helper.GetInvokeMethod(value).Static;
            }

            return(isStatic);
        }
Esempio n. 12
0
 public static string GetNameWithDeclaringType(IEventReference value)
 {
     return GetNameWithResolutionScope(value.DeclaringType as ITypeReference) + "." + GetName(value);
 }
Esempio n. 13
0
        public static MethodVisibility GetVisibility(IEventReference value)
        {
            IMethodDeclaration addMethod = GetAddMethod(value);
            IMethodDeclaration removeMethod = GetRemoveMethod(value);
            IMethodDeclaration invokeMethod = GetInvokeMethod(value);

            if ((addMethod != null) && (removeMethod != null) && (invokeMethod != null))
            {
                if ((addMethod.Visibility == removeMethod.Visibility) && (addMethod.Visibility == invokeMethod.Visibility))
                {
                    return addMethod.Visibility;
                }
            }
            else if ((addMethod != null) && (removeMethod != null))
            {
                if (addMethod.Visibility == removeMethod.Visibility)
                {
                    return addMethod.Visibility;
                }
            }
            else if ((addMethod != null) && (invokeMethod != null))
            {
                if (addMethod.Visibility == invokeMethod.Visibility)
                {
                    return addMethod.Visibility;
                }
            }
            else if ((removeMethod != null) && (invokeMethod != null))
            {
                if (removeMethod.Visibility == invokeMethod.Visibility)
                {
                    return removeMethod.Visibility;
                }
            }
            else if (addMethod != null)
            {
                return addMethod.Visibility;
            }
            else if (removeMethod != null)
            {
                return removeMethod.Visibility;
            }
            else if (invokeMethod != null)
            {
                return invokeMethod.Visibility;
            }

            return MethodVisibility.Public;
        }
Esempio n. 14
0
 public override void VisitEventReference(IEventReference value)
 {
     WriteUnsupported(value.ToString());
 }
Esempio n. 15
0
 public static string GetName(IEventReference value)
 {
     return value.Name;
 }
 private void WriteEventReference(IEventReference eventReference, IFormatter formatter)
 {
     // TODO Escape?
     this.WriteReference(eventReference.Name, formatter, this.GetEventReferenceDescription(eventReference), eventReference);
 }
Esempio n. 17
0
 public int Visit(IEventReference eventRef, int context)
 {
     throw new NotImplementedException();
 }
            private string GetEventReferenceDescription(IEventReference eventReference)
            {
                IFormatter formatter = new TextFormatter();

                formatter.WriteKeyword("event");
                formatter.Write(" ");
                this.WriteType(eventReference.EventType, formatter);
                formatter.Write(" ");
                formatter.Write(this.GetTypeReferenceDescription(eventReference.DeclaringType as ITypeReference));
                formatter.Write(".");
                this.WriteDeclaration(eventReference.Name, formatter);
                formatter.Write(";");

                return formatter.ToString();
            }
 public override void Visit(IEventReference eventRef, IKaVESet <IName> context)
 {
     context.Add(eventRef.EventName);
     base.Visit(eventRef, context);
 }
Esempio n. 20
0
        private TreeNode FindNode(IMemberReference memberReference)
        {
            if (memberReference is IAssemblyReference)
            {
                foreach (TreeNode node in _assembliesTree.Nodes)
                {
                    if (node.Tag == memberReference)
                    {
                        return(node);
                    }
                }

                return(null);
            }

            if (memberReference is IResourceReference)
            {
                IResourceReference resourceReference = (IResourceReference)memberReference;
                TreeNode           assemblyNode      = FindNode(resourceReference.Resolve().Assembly);
                TreeNode           resourcesNode     = null;
                foreach (TreeNode childNode in assemblyNode.Nodes)
                {
                    if (childNode.Text == "Resources")
                    {
                        resourcesNode = childNode;
                    }
                }

                return(FindNode(memberReference, resourcesNode));
            }

            if (memberReference is IModuleReference)
            {
                IModuleReference moduleReference = (IModuleReference)memberReference;
                return(FindNode(memberReference, FindNode(moduleReference.Resolve().Assembly)));
            }

            if (memberReference is ITypeReference)
            {
                ITypeReference typeReference = (ITypeReference)memberReference;


                if (typeReference.Resolve().DeclaringType != null)
                {
                    TreeNode declaringTypeNode = FindNode(typeReference.Resolve().DeclaringType);
                    return(FindNode(memberReference, declaringTypeNode));
                }
                else
                {
                    TreeNode moduleNode = FindNode(typeReference.Resolve().Module);

                    foreach (TreeNode namespaceNode in moduleNode.Nodes)
                    {
                        if (((namespaceNode.Text == "-") && (typeReference.Namespace == null)) ||
                            (namespaceNode.Text == typeReference.Namespace))
                        {
                            return(FindNode(memberReference, namespaceNode));
                        }
                    }
                }

                return(null);
            }

            if (memberReference is IMethodReference)
            {
                IMethodReference methodReference = (IMethodReference)memberReference;
                TreeNode         typeNode        = FindNode(methodReference.Resolve().DeclaringType);

                if (typeNode == null)
                {
                    return(null);
                }

                foreach (TreeNode node in typeNode.Nodes)
                {
                    if (node.Tag == memberReference)
                    {
                        return(node);
                    }

                    if ((node.Tag is IPropertyReference) || (node.Tag is IEventReference))
                    {
                        TreeNode nestedEventNode = FindNode(memberReference, node);
                        if (nestedEventNode != null)
                        {
                            return(nestedEventNode);
                        }
                    }
                }

                return(null);
            }

            if (memberReference is IFieldReference)
            {
                IFieldReference fieldReference = (IFieldReference)memberReference;
                return(FindNode(memberReference, FindNode(fieldReference.Resolve().DeclaringType)));
            }

            if (memberReference is IPropertyReference)
            {
                IPropertyReference propertyReference = (IPropertyReference)memberReference;
                return(FindNode(memberReference, FindNode(propertyReference.Resolve().DeclaringType)));
            }

            if (memberReference is IEventReference)
            {
                IEventReference eventReference = (IEventReference)memberReference;
                return(FindNode(memberReference, FindNode(eventReference.Resolve().DeclaringType)));
            }

            return(null);
        }
Esempio n. 21
0
 public virtual void Visit(IEventReference eventRef, TContext context)
 {
     eventRef.Reference.Accept(this, context);
 }
Esempio n. 22
0
        public bool TryResolve(IServiceDefinition serviceDefinition, EventId eventId, out IEventReference eventReference)
        {
            var eventDefinition = serviceDefinition.FindEvent(eventId.Name);

            if (eventDefinition == null || eventDefinition.IsIgnored)
            {
                eventReference = null;
                return(false);
            }

            var delegateMethodInfo = eventDefinition.EventInfo.EventHandlerType.GetMethod("Invoke");
            var invoker            = _methodInvokerFactory.Create(delegateMethodInfo);

            eventReference = new EventReference(eventId, eventDefinition, invoker);
            return(true);
        }
Esempio n. 23
0
        internal static int GetImageIndex(IMemberReference memberReference)
        {
            IFieldReference fieldReference = memberReference as IFieldReference;

            if (fieldReference != null)
            {
                IFieldDeclaration fieldDeclaration = fieldReference.Resolve();
                if (fieldDeclaration == null)
                {
                    return(BrowserResource.Error);
                }

                int icon = BrowserResource.Field;

                if (IsEnumerationElement(fieldReference))
                {
                    icon = BrowserResource.EnumerationElement;
                }
                else
                {
                    if (fieldDeclaration.Static)
                    {
                        icon += 6;
                    }
                }

                switch (fieldDeclaration.Visibility)
                {
                case FieldVisibility.Public:
                    return(icon);

                case FieldVisibility.Assembly:
                    return(icon + 1);

                case FieldVisibility.FamilyOrAssembly:
                    return(icon + 2);

                case FieldVisibility.Family:
                    return(icon + 3);

                case FieldVisibility.Private:
                case FieldVisibility.PrivateScope:
                    return(icon + 4);

                case FieldVisibility.FamilyAndAssembly:
                    return(icon + 5);
                }
            }

            IMethodReference methodReference = memberReference as IMethodReference;

            if (methodReference != null)
            {
                IArrayType arrayType = methodReference.DeclaringType as IArrayType;
                if (arrayType != null)
                {
                    return(BrowserResource.Method);
                }

                IMethodDeclaration methodDeclaration = methodReference.Resolve();
                if (methodDeclaration == null)
                {
                    return(BrowserResource.Error);
                }

                int icon = BrowserResource.Method;

                string methodName = methodReference.Name;
                if ((methodName == ".ctor") || (methodName == ".cctor"))
                {
                    icon = BrowserResource.Constructor;
                }
                else if ((methodDeclaration.Virtual) && (!methodDeclaration.Abstract))
                {
                    icon += 12;
                }

                if (methodDeclaration.Static)
                {
                    icon += 6;
                }

                switch (methodDeclaration.Visibility)
                {
                case MethodVisibility.Public:
                    return(icon);

                case MethodVisibility.Assembly:
                    return(icon + 1);

                case MethodVisibility.FamilyOrAssembly:
                    return(icon + 2);

                case MethodVisibility.Family:
                    return(icon + 3);

                case MethodVisibility.Private:
                case MethodVisibility.PrivateScope:
                    return(icon + 4);

                case MethodVisibility.FamilyAndAssembly:
                    return(icon + 5);
                }
            }

            IPropertyReference propertyReference = memberReference as IPropertyReference;

            if (propertyReference != null)
            {
                IPropertyDeclaration propertyDeclaration = propertyReference.Resolve();
                if (propertyDeclaration != null)
                {
                    IMethodReference   getMethodReference = propertyDeclaration.GetMethod;
                    IMethodDeclaration getMethod          = (getMethodReference == null) ? null : getMethodReference.Resolve();

                    IMethodReference   setMethodReference = propertyDeclaration.SetMethod;
                    IMethodDeclaration setMethod          = (setMethodReference == null) ? null : setMethodReference.Resolve();

                    int index = BrowserResource.Property;

                    if ((setMethod != null) && (getMethod != null))
                    {
                        index = BrowserResource.Property;
                    }
                    else if (setMethod != null)
                    {
                        index = BrowserResource.PropertyWrite;
                    }
                    else if (getMethod != null)
                    {
                        index = BrowserResource.PropertyRead;
                    }

                    if (Helper.IsStatic(propertyReference))
                    {
                        index += 6;
                    }

                    switch (Helper.GetVisibility(propertyReference))
                    {
                    case MethodVisibility.Public:
                        return(index + 0);

                    case MethodVisibility.Assembly:
                        return(index + 1);

                    case MethodVisibility.FamilyOrAssembly:
                        return(index + 2);

                    case MethodVisibility.Family:
                        return(index + 3);

                    case MethodVisibility.Private:
                    case MethodVisibility.PrivateScope:
                        return(index + 4);

                    case MethodVisibility.FamilyAndAssembly:
                        return(index + 5);
                    }
                }
            }

            IEventReference eventReference = memberReference as IEventReference;

            if (eventReference != null)
            {
                int index = BrowserResource.Event;

                if (Helper.IsStatic(eventReference))
                {
                    index += 6;
                }

                switch (Helper.GetVisibility(eventReference))
                {
                case MethodVisibility.Public:
                    return(index + 0);

                case MethodVisibility.Assembly:
                    return(index + 1);

                case MethodVisibility.FamilyOrAssembly:
                    return(index + 2);

                case MethodVisibility.Family:
                    return(index + 3);

                case MethodVisibility.Private:
                case MethodVisibility.PrivateScope:
                    return(index + 4);

                case MethodVisibility.FamilyAndAssembly:
                    return(index + 5);
                }
            }

            throw new NotSupportedException();
        }
Esempio n. 24
0
        internal static int GetColor(IMemberReference memberReference)
        {
            IFieldReference fieldReference = memberReference as IFieldReference;

            if (fieldReference != null)
            {
                IFieldDeclaration fieldDeclaration = fieldReference.Resolve();
                if (fieldDeclaration == null)
                {
                    return(ColorInformation.Error);
                }

                switch (fieldDeclaration.Visibility)
                {
                case FieldVisibility.Private:
                case FieldVisibility.PrivateScope:
                case FieldVisibility.Assembly:
                case FieldVisibility.FamilyAndAssembly:
                    return(ColorInformation.Hidden);

                case FieldVisibility.Public:
                case FieldVisibility.Family:
                case FieldVisibility.FamilyOrAssembly:
                    return(ColorInformation.Normal);
                }
            }

            IMethodReference methodReference = memberReference as IMethodReference;

            if (methodReference != null)
            {
                IArrayType arrayType = methodReference.DeclaringType as IArrayType;
                if (arrayType != null)
                {
                    return(IconHelper.GetColor(arrayType.ElementType as ITypeReference));
                }

                IMethodDeclaration methodDeclaration = methodReference.Resolve();
                if (methodDeclaration == null)
                {
                    return(ColorInformation.Error);
                }

                switch (methodDeclaration.Visibility)
                {
                case MethodVisibility.Private:
                case MethodVisibility.PrivateScope:
                case MethodVisibility.Assembly:
                case MethodVisibility.FamilyAndAssembly:
                    return(ColorInformation.Hidden);

                case MethodVisibility.Public:
                case MethodVisibility.Family:
                case MethodVisibility.FamilyOrAssembly:
                    return(ColorInformation.Normal);
                }
            }

            IPropertyReference propertyReference = memberReference as IPropertyReference;

            if (propertyReference != null)
            {
                switch (Helper.GetVisibility(propertyReference))
                {
                case MethodVisibility.Private:
                case MethodVisibility.PrivateScope:
                case MethodVisibility.Assembly:
                case MethodVisibility.FamilyAndAssembly:
                    return(ColorInformation.Hidden);

                case MethodVisibility.Public:
                case MethodVisibility.Family:
                case MethodVisibility.FamilyOrAssembly:
                    return(ColorInformation.Normal);
                }
            }

            IEventReference eventReference = memberReference as IEventReference;

            if (eventReference != null)
            {
                switch (Helper.GetVisibility(eventReference))
                {
                case MethodVisibility.Private:
                case MethodVisibility.PrivateScope:
                case MethodVisibility.Assembly:
                case MethodVisibility.FamilyAndAssembly:
                    return(ColorInformation.Hidden);

                case MethodVisibility.Public:
                case MethodVisibility.Family:
                case MethodVisibility.FamilyOrAssembly:
                    return(ColorInformation.Normal);
                }
            }

            throw new NotSupportedException();
        }
Esempio n. 25
0
        public static bool IsStatic(IEventReference value)
        {
            bool isStatic = false;

            if (GetAddMethod(value) != null)
            {
                isStatic |= GetAddMethod(value).Static;
            }

            if (GetRemoveMethod(value) != null)
            {
                isStatic |= GetRemoveMethod(value).Static;
            }

            if (GetInvokeMethod(value) != null)
            {
                isStatic |= GetInvokeMethod(value).Static;
            }

            return isStatic;
        }
Esempio n. 26
0
 public string GetNameWithDeclaringType(IEventReference value)
 {
     return(this.GetNameWithResolutionScope(value.DeclaringType as ITypeReference) + "." + this.GetName(value));
 }
Esempio n. 27
0
        public static bool IsVisible(IEventReference value, IVisibilityConfiguration visibility)
        {
            if (IsVisible(value.DeclaringType, visibility))
            {
                switch (GetVisibility(value))
                {
                    case MethodVisibility.Public :
                        return visibility.Public;

                    case MethodVisibility.Assembly :
                        return visibility.Assembly;

                    case MethodVisibility.FamilyOrAssembly :
                        return visibility.FamilyOrAssembly;

                    case MethodVisibility.Family :
                        return visibility.Family;

                    case MethodVisibility.Private:
                    case MethodVisibility.PrivateScope:
                        return visibility.Private;

                    case MethodVisibility.FamilyAndAssembly :
                        return visibility.FamilyAndAssembly;
                }

                throw new NotSupportedException();
            }

            return false;
        }
Esempio n. 28
0
 public override void Visit(IEventReference eventRef, StringBuilder sb)
 {
     sb.Append("TODO: IEventReference");
 }
Esempio n. 29
0
 public virtual void VisitEventReference(IEventReference value)
 {
     this.VisitType(value.EventType);
 }
Esempio n. 30
0
 public virtual void VisitEventReference(IEventReference value)
 {
     VisitType(value.EventType);
 }
Esempio n. 31
0
 public string GetName(IEventReference value)
 {
     return(value.Name);
 }
 private string GetEventReferenceText(IEventReference value)
 {
     using (StringWriter writer = new StringWriter(CultureInfo.InvariantCulture))
     {
         writer.Write(value.Name);
         writer.Write(":");
         writer.Write(this.GetTypeText(value.EventType));
         return writer.ToString();
     }
 }
Esempio n. 33
0
    /// <summary>
    /// Determines whether the specified value is visible.
    /// </summary>
    /// <param name="value">The value.</param>
    /// <param name="visibility">The visibility.</param>
    /// <returns>
    ///   <c>true</c> if the specified value is visible; otherwise, <c>false</c>.
    /// </returns>
    internal static bool IsVisible(IEventReference value, IVisibilityConfiguration visibility)
    {
      if (ReflectorHelper.IsVisible(value.DeclaringType, visibility))
      {
        switch (ReflectorHelper.GetVisibility(value))
        {
          case MethodVisibility.Public:
            return visibility.Public;

          case MethodVisibility.Assembly:
            return visibility.Assembly;

          case MethodVisibility.FamilyOrAssembly:
            return visibility.FamilyOrAssembly;

          case MethodVisibility.Family:
            return visibility.Family;

          case MethodVisibility.Private:
          case MethodVisibility.PrivateScope:
            return visibility.Private;

          case MethodVisibility.FamilyAndAssembly:
            return visibility.FamilyAndAssembly;
        }

        throw new InvalidOperationException();
      }

      return false;
    }
Esempio n. 34
0
        public static IMethodDeclaration GetInvokeMethod(IEventReference value)
        {
            IEventDeclaration eventDeclaration = value.Resolve();

            return(eventDeclaration.InvokeMethod?.Resolve());
        }
Esempio n. 35
0
    /// <summary>
    /// Gets the invoke method.
    /// </summary>
    /// <param name="value">The event reference value.</param>
    /// <returns>A method declaration for the event's invoke method.</returns>
    internal static IMethodDeclaration GetInvokeMethod(IEventReference value)
    {
      IEventDeclaration eventDeclaration = value.Resolve();
      if (eventDeclaration.InvokeMethod != null)
      {
        return eventDeclaration.InvokeMethod.Resolve();
      }

      return null;
    }
 public virtual IEventReference TransformEventReference(IEventReference value)
 {
     return value;
 }