示例#1
0
        RuntimeType[] GetNestedTypes_internal(string displayName, BindingFlags bindingAttr, MemberListType listType)
        {
            string internalName = null;

#if NETCORE
            if (displayName != null)
            {
                internalName = displayName;
            }
#else
            if (displayName != null)
            {
                internalName = TypeIdentifiers.FromDisplay(displayName).InternalName;
            }
#endif
            using (var namePtr = new Mono.SafeStringMarshal(internalName))
                using (var h = new Mono.SafeGPtrArrayHandle(GetNestedTypes_native(namePtr.Value, bindingAttr, listType))) {
                    int n = h.Length;
                    var a = new RuntimeType [n];
                    for (int i = 0; i < n; i++)
                    {
                        var th = new RuntimeTypeHandle(h[i]);
                        a[i] = (RuntimeType)Type.GetTypeFromHandle(th);
                    }
                    return(a);
                }
        }
示例#2
0
        internal static RuntimeType?GetTypeByName(string typeName, bool throwOnError, bool ignoreCase, ref StackCrawlMark stackMark)
        {
            ArgumentNullException.ThrowIfNull(typeName);

            if (typeName.Length == 0)
            {
                if (throwOnError)
                {
                    throw new TypeLoadException("A null or zero length string does not represent a valid Type.");
                }
                else
                {
                    return(null);
                }
            }

            RuntimeType?t = null;

            using (var namePtr = new Mono.SafeStringMarshal(typeName)) {
                internal_from_name(
                    namePtr.Value,
                    ref stackMark,
                    ObjectHandleOnStack.Create(ref t), throwOnError, ignoreCase);
                if (throwOnError && t == null)
                {
                    throw new TypeLoadException("Error loading '" + typeName + "'");
                }
            }
            return(t);
        }
        public bool IsInRole(string role)
        {
            if (role == null)
            {
                return(false);                  // ArgumentNullException
            }
            if (Environment.IsUnix)
            {
                // note: Posix is always case-sensitive
                using (var rolePtr = new Mono.SafeStringMarshal(role))
                    return(IsMemberOfGroupName(Token, rolePtr.Value));
            }
            else
            {
                // Windows specific code that
                // (a) build the role cache like the MS framework (for compatibility)
                // (b) case sensitive (for Fx 1.0) and case insensitive (later Fx)
                if (m_roles == null)
                {
                    m_roles = WindowsIdentity._GetRoles(Token);
                }

                role = role.ToUpperInvariant();
                foreach (string check in m_roles)
                {
                    if ((check != null) && (role == check.ToUpperInvariant()))
                    {
                        return(true);
                    }
                }
                return(false);
            }
        }
示例#4
0
        RuntimeFieldInfo[] GetFields_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(GetFields_native(namePtr.Value, bindingAttr, listType))) {
                    int n = h.Length;
                    var a = new RuntimeFieldInfo[n];
                    for (int i = 0; i < n; i++)
                    {
                        var fh = new RuntimeFieldHandle(h[i]);
                        a[i] = (RuntimeFieldInfo)FieldInfo.GetFieldFromHandle(fh, refh);
                    }
                    return(a);
                }
        }
示例#5
0
        RuntimePropertyInfo[] GetPropertiesByName(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(GetPropertiesByName_native(namePtr.Value, bindingAttr, listType))) {
                    var n = h.Length;
                    var a = new RuntimePropertyInfo [n];
                    for (int i = 0; i < n; i++)
                    {
                        var ph = new Mono.RuntimePropertyHandle(h[i]);
                        a[i] = (RuntimePropertyInfo)RuntimePropertyInfo.GetPropertyFromHandle(ph, refh);
                    }
                    return(a);
                }
        }
示例#6
0
        internal RuntimeMethodInfo[] GetMethodsByName(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(GetMethodsByName_native(namePtr.Value, bindingAttr, listType))) {
                    var n = h.Length;
                    var a = new RuntimeMethodInfo [n];
                    for (int i = 0; i < n; i++)
                    {
                        var mh = new RuntimeMethodHandle(h[i]);
                        a[i] = (RuntimeMethodInfo)RuntimeMethodInfo.GetMethodFromHandleNoGenericCheck(mh, refh);
                    }
                    return(a);
                }
        }
示例#7
0
        RuntimeEventInfo[] GetEvents_internal(string name, BindingFlags bindingAttr, RuntimeType reflectedType)
        {
            var refh = new RuntimeTypeHandle(reflectedType);

            using (var namePtr = new Mono.SafeStringMarshal(name))
                using (var h = new Mono.SafeGPtrArrayHandle(GetEvents_native(namePtr.Value, bindingAttr))) {
                    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);
                }
        }
示例#8
0
        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]);
#if NETCORE
                        throw new NotImplementedException();
#else
                        a[i] = (RuntimeEventInfo)EventInfo.GetEventFromHandle(eh, refh);
#endif
                    }
                    return(a);
                }
        }
示例#9
0
		RuntimeType[] GetNestedTypes_internal (string displayName, BindingFlags bindingAttr)
		{
			string internalName = null;
			if (displayName != null)
				internalName = TypeIdentifiers.FromDisplay (displayName).InternalName;
			using (var namePtr = new Mono.SafeStringMarshal (internalName))
			using (var h = new Mono.SafeGPtrArrayHandle (GetNestedTypes_native (namePtr.Value, bindingAttr))) {
				int n = h.Length;
				var a = new RuntimeType [n];
				for (int i = 0; i < n; i++) {
					var th = new RuntimeTypeHandle (h[i]);
					a[i] = (RuntimeType) Type.GetTypeFromHandle (th);
				}
				return a;
			}
		}
示例#10
0
		RuntimeEventInfo[] GetEvents_internal (string name, BindingFlags bindingAttr, RuntimeType reflectedType)
		{
			var refh = new RuntimeTypeHandle (reflectedType);
			using (var namePtr = new Mono.SafeStringMarshal (name))
			using (var h = new Mono.SafeGPtrArrayHandle (GetEvents_native (namePtr.Value, bindingAttr))) {
				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;
			}
		}
示例#11
0
		RuntimePropertyInfo[] GetPropertiesByName (string name, BindingFlags bindingAttr, bool icase, RuntimeType reflectedType)
		{
			var refh = new RuntimeTypeHandle (reflectedType);
			using (var namePtr = new Mono.SafeStringMarshal (name))
			using (var h = new Mono.SafeGPtrArrayHandle (GetPropertiesByName_native (namePtr.Value, bindingAttr, icase))) {
				var n = h.Length;
				var a = new RuntimePropertyInfo [n];
				for (int i = 0; i < n; i++) {
					var ph = new Mono.RuntimePropertyHandle (h[i]);
					a[i] = (RuntimePropertyInfo) PropertyInfo.GetPropertyFromHandle (ph, refh);
				}
				return a;
			}
		}
示例#12
0
		internal RuntimeMethodInfo[] GetMethodsByName (string name, BindingFlags bindingAttr, bool ignoreCase, RuntimeType reflectedType)
		{
			var refh = new RuntimeTypeHandle (reflectedType);
			using (var namePtr = new Mono.SafeStringMarshal (name))
			using (var h = new Mono.SafeGPtrArrayHandle (GetMethodsByName_native (namePtr.Value, bindingAttr, ignoreCase))) {
				var n = h.Length;
				var a = new RuntimeMethodInfo [n];
				for (int i = 0; i < n; i++) {
					var mh = new RuntimeMethodHandle (h[i]);
					a[i] = (RuntimeMethodInfo) MethodBase.GetMethodFromHandleNoGenericCheck (mh, refh);
				}
				return a;
			}
		}