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()); } }
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); }
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); }
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); }
/// <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); }
public static string GetNameWithDeclaringType(IEventReference value) { return GetNameWithResolutionScope(value.DeclaringType as ITypeReference) + "." + GetName(value); }
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; }
public override void VisitEventReference(IEventReference value) { WriteUnsupported(value.ToString()); }
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); }
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); }
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); }
public virtual void Visit(IEventReference eventRef, TContext context) { eventRef.Reference.Accept(this, context); }
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); }
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(); }
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(); }
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; }
public string GetNameWithDeclaringType(IEventReference value) { return(this.GetNameWithResolutionScope(value.DeclaringType as ITypeReference) + "." + this.GetName(value)); }
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; }
public override void Visit(IEventReference eventRef, StringBuilder sb) { sb.Append("TODO: IEventReference"); }
public virtual void VisitEventReference(IEventReference value) { this.VisitType(value.EventType); }
public virtual void VisitEventReference(IEventReference value) { VisitType(value.EventType); }
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(); } }
/// <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; }
public static IMethodDeclaration GetInvokeMethod(IEventReference value) { IEventDeclaration eventDeclaration = value.Resolve(); return(eventDeclaration.InvokeMethod?.Resolve()); }
/// <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; }