Пример #1
0
 void Format(DmdMethodBase method, DmdEventInfo @event, AccessorKind accessorKind)
 {
     if (DeclaringTypes)
     {
         FormatType(@event.DeclaringType);
         WritePeriod();
     }
     WriteIdentifier(@event.Name, TypeFormatterUtils.GetColor(@event));
     WriteToken(@event);
     WriteAccessor(accessorKind);
     WriteToken(method);
     WriteGenericArguments(method);
     WriteMethodParameterList(method, MethodParenOpen, MethodParenClose);
     WriteOffset();
 }
Пример #2
0
        public override DmdEventInfo[] ReadDeclaredEvents(DmdType declaringType, DmdType reflectedType)
        {
            var mapRid  = reader.Metadata.GetEventMapRid(Rid);
            var ridList = reader.Metadata.GetEventRidList(mapRid);

            if (ridList.Count == 0)
            {
                return(Array.Empty <DmdEventInfo>());
            }
            var events = new DmdEventInfo[ridList.Count];

            for (int i = 0; i < events.Length; i++)
            {
                uint rid = ridList[i];
                events[i] = reader.CreateEventDef(rid, declaringType, reflectedType);
            }
            return(events);
        }
Пример #3
0
        DmdEventInfo[] ReadDeclaredEvents_COMThread(DmdType declaringType, DmdType reflectedType)
        {
            reader.Dispatcher.VerifyAccess();
            var tokens = MDAPI.GetEventTokens(reader.MetaDataImport, (uint)MetadataToken);

            if (tokens.Length == 0)
            {
                return(Array.Empty <DmdEventInfo>());
            }
            var events = new DmdEventInfo[tokens.Length];

            for (int i = 0; i < events.Length; i++)
            {
                uint rid = tokens[i] & 0x00FFFFFF;
                events[i] = reader.CreateEventDef_COMThread(rid, declaringType, reflectedType);
            }
            return(events);
        }
Пример #4
0
        public static bool IsMatch(DmdEventInfo @event, DmdBindingFlags bindingAttr)
        {
            var attr = DmdBindingFlags.Default;

            if (@event.AddMethod?.IsPublic == true || @event.RemoveMethod?.IsPublic == true || @event.RaiseMethod?.IsPublic == true)
            {
                attr |= DmdBindingFlags.Public;
            }
            else
            {
                attr |= DmdBindingFlags.NonPublic;
            }
            if (@event.AddMethod?.IsStatic == true || @event.RemoveMethod?.IsStatic == true || @event.RaiseMethod?.IsStatic == true)
            {
                attr |= DmdBindingFlags.Static;
            }
            else
            {
                attr |= DmdBindingFlags.Instance;
            }
            if ((object)@event.ReflectedType != @event.DeclaringType)
            {
                var method = @event.AddMethod;
                if ((object)method != null)
                {
                    if (method.IsStatic)
                    {
                        if (method.IsPrivate)
                        {
                            return(false);
                        }
                        attr |= DmdBindingFlags.FlattenHierarchy;
                    }
                    else
                    {
                        if (!(method.IsVirtual || method.IsAbstract) && method.IsPrivate)
                        {
                            return(false);
                        }
                    }
                }
            }
            return((attr & bindingAttr) == attr);
        }
        void Format(DmdMethodBase method, DmdEventInfo @event, AccessorKind accessorKind)
        {
            OutputWrite(Keyword_Event, DbgTextColor.Keyword);
            WriteSpace();

            WriteAccessor(accessorKind);
            WriteToken(method);

            if (DeclaringTypes)
            {
                FormatType(@event.DeclaringType !);
                WritePeriod();
            }
            WriteIdentifier(@event.Name, TypeFormatterUtils.GetColor(@event));
            WriteToken(@event);
            WriteSpace();
            OutputWrite(Keyword_As, DbgTextColor.Keyword);
            WriteSpace();
            FormatType(@event.EventHandlerType);
            WriteOffset();
        }
Пример #6
0
 public static object GetColor(DmdEventInfo @event) =>
 GetColor(@event.AddMethod ?? @event.RemoveMethod, BoxedTextColor.StaticEvent, BoxedTextColor.InstanceEvent);
Пример #7
0
 public static DbgTextColor GetColor(DmdEventInfo @event) =>
 GetColor(@event.AddMethod ?? @event.RemoveMethod, DbgTextColor.StaticEvent, DbgTextColor.InstanceEvent);