RuntimeEventInfo[] GetEvents_internal(string name, BindingFlags bindingAttr, MemberListType listType, RuntimeType reflectedType) { var refh = new RuntimeTypeHandle(reflectedType); using (var namePtr = new Mono.SafeStringMarshal(name)) using (var h = new Mono.SafeGPtrArrayHandle(GetEvents_native(namePtr.Value, listType))) { int n = h.Length; var a = new RuntimeEventInfo[n]; for (int i = 0; i < n; i++) { var eh = new Mono.RuntimeEventHandle(h[i]); a[i] = (RuntimeEventInfo)EventInfo.GetEventFromHandle(eh, refh); } return(a); } }
internal IEnumerable <EventInfo> CoreGetDeclaredEvents(NameFilter optionalNameFilter, RuntimeTypeInfo reflectedType) { RuntimeNamedTypeInfo definingType = AnchoringTypeDefinitionForDeclaredMembers; if (definingType != null) { MetadataReader reader = definingType.Reader; foreach (EventHandle eventHandle in definingType.DeclaredEventHandles) { if (optionalNameFilter == null || optionalNameFilter.Matches(eventHandle.GetEvent(reader).Name, reader)) { yield return(RuntimeEventInfo.GetRuntimeEventInfo(eventHandle, definingType, this, reflectedType)); } } } }
// // Return all declared events whose name matches "optionalNameFilter". If optionalNameFilter is null, return them all. // internal IEnumerable <RuntimeEventInfo> GetDeclaredEventsInternal(RuntimeNamedTypeInfo definingType, String optionalNameFilter) { if (definingType != null) { // We require the caller to pass a value that we could calculate ourselves because we're an iterator and we // don't want any MissingMetadataException that AnchoringType throws to be deferred. Debug.Assert(definingType.Equals(this.AnchoringTypeDefinitionForDeclaredMembers)); MetadataReader reader = definingType.Reader; foreach (EventHandle eventHandle in definingType.DeclaredEventHandles) { if (optionalNameFilter == null || eventHandle.GetEvent(reader).Name.StringEquals(optionalNameFilter, reader)) { yield return(RuntimeEventInfo.GetRuntimeEventInfo(eventHandle, definingType, this)); } } } }
private unsafe void PopulateEvents(RuntimeType.RuntimeTypeCache.Filter filter, RuntimeTypeHandle declaringTypeHandle, MetadataImport scope, int *tkAssociates, int cAssociates, Hashtable csEventInfos, List <RuntimeEventInfo> list) { //Require tkAssociates.AllocatedUntil >= cAssociates for (int i = 0; i < cAssociates; i++) { int mdToken = tkAssociates[i]; Utf8String name = scope.GetName(mdToken); if (filter.Match(name)) { bool flag; RuntimeEventInfo item = new RuntimeEventInfo(mdToken, declaringTypeHandle.GetRuntimeType(), this.m_runtimeTypeCache, out flag); if ((declaringTypeHandle.Equals(this.m_runtimeTypeCache.RuntimeTypeHandle) || !flag) && (csEventInfos[item.Name] == null)) { csEventInfos[item.Name] = item; list.Add(item); } } } }
internal RemotingCachedData(RuntimeEventInfo ri) { this.RI = ri; }
internal static RemotingCachedData GetReflectionCachedData(MemberInfo mi) { RemotingCachedData data = null; MethodBase base2 = null; RuntimeType type = null; RuntimeFieldInfo ri = null; RuntimeEventInfo info2 = null; RuntimePropertyInfo info3 = null; SerializationFieldInfo info4 = null; base2 = mi as MethodBase; if (base2 != null) { return(GetReflectionCachedData(base2)); } type = mi as RuntimeType; if (type != null) { return(GetReflectionCachedData(type)); } ri = mi as RuntimeFieldInfo; if (ri != null) { data = (RemotingCachedData)ri.RemotingCache[CacheObjType.RemotingData]; if (data == null) { ri.RemotingCache[CacheObjType.RemotingData] = data = new RemotingCachedData(ri); } return(data); } info2 = mi as RuntimeEventInfo; if (info2 != null) { data = (RemotingCachedData)info2.RemotingCache[CacheObjType.RemotingData]; if (data == null) { info2.RemotingCache[CacheObjType.RemotingData] = data = new RemotingCachedData(info2); } return(data); } info3 = mi as RuntimePropertyInfo; if (info3 != null) { data = (RemotingCachedData)info3.RemotingCache[CacheObjType.RemotingData]; if (data == null) { info3.RemotingCache[CacheObjType.RemotingData] = data = new RemotingCachedData(info3); } return(data); } info4 = mi as SerializationFieldInfo; if (info4 == null) { throw new ArgumentException(Environment.GetResourceString("Argument_MustBeRuntimeReflectionObject")); } data = (RemotingCachedData)info4.RemotingCache[CacheObjType.RemotingData]; if (data == null) { info4.RemotingCache[CacheObjType.RemotingData] = data = new RemotingCachedData(info4); } return(data); }