Mono.CSharp.Lock.ResolvePredefinedMethods C# (CSharp) Method

ResolvePredefinedMethods() private method

private ResolvePredefinedMethods ( ResolveContext rc ) : int
rc ResolveContext
return int
		int ResolvePredefinedMethods (ResolveContext rc)
		{
			if (TypeManager.void_monitor_enter_object == null || TypeManager.void_monitor_exit_object == null) {
				TypeSpec monitor_type = rc.Module.PredefinedTypes.Monitor.Resolve (loc);

				if (monitor_type == null)
					return 0;

				// Try 4.0 Monitor.Enter (object, ref bool) overload first
				var filter = MemberFilter.Method ("Enter", 0, new ParametersImported (
					new[] {
							new ParameterData (null, Parameter.Modifier.NONE),
							new ParameterData (null, Parameter.Modifier.REF)
						},
					new[] {
							TypeManager.object_type,
							TypeManager.bool_type
						}, false), null);

				TypeManager.void_monitor_enter_object = TypeManager.GetPredefinedMethod (monitor_type, filter, true, loc);
				if (TypeManager.void_monitor_enter_object == null) {
					TypeManager.void_monitor_enter_object = TypeManager.GetPredefinedMethod (
						monitor_type, "Enter", loc, TypeManager.object_type);
				}

				TypeManager.void_monitor_exit_object = TypeManager.GetPredefinedMethod (
					monitor_type, "Exit", loc, TypeManager.object_type);
			}

			return TypeManager.void_monitor_enter_object.Parameters.Count;
		}