Exemplo n.º 1
0
        private static MethodInfo GetMethodInfo(Type type, string methodName, IEnumerable <object> parameters)
        {
            var parametersType = parameters.Select(p => p.GetType()).ToArray();

            var parametersTypeName = parametersType.Select(p => p.Name).Join("/");

            var key = new MemberKey(type, string.Concat(methodName, parametersTypeName));

            lock (lockInstance)
            {
                if (!typeMethodInfoCache.ContainsKey(key))
                {
                    var methodInfo =
                        type.GetMethod(
                            methodName,
                            BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic,
                            null,
                            new[] { typeof(string) },
                            null);

                    if (methodInfo == null)
                    {
                        var message = $"Cannot find the method '{methodName}' into the type '{type}'.";

                        throw new ArgumentException(message);
                    }

                    typeMethodInfoCache.Add(key, methodInfo);
                }
            }

            var method = typeMethodInfoCache[key];

            return(method);
        }
Exemplo n.º 2
0
		private static MethodInfo GetMethodInfo(Type type, string methodName, IEnumerable<object> parameters)
		{
			var parametersType = parameters.Select(p => p.GetType()).ToArray();

			var parametersTypeName = parametersType.Select(p => p.Name).Join("/");

			var key = new MemberKey(type, string.Concat(methodName, parametersTypeName));

			lock (lockInstance)
			{
				if (!typeMethodInfoCache.ContainsKey(key))
				{
					var methodInfo =
						type.GetMethod(
							methodName,
							BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic,
							null,
							new[] { typeof(string) },
							null);

					if (methodInfo == null)
					{
						var message = "Cannot find the method '{Method}' into the type '{Type}'.".NamedFormat(methodName, type.FullName);

						new ArgumentException(message).Throw();
					}

					typeMethodInfoCache.Add(key, methodInfo);
				}
			}

			var method = typeMethodInfoCache[key];

			return method;
		}
Exemplo n.º 3
0
		public static FieldInfo Field(this Type type, string propertyName)
		{
			var key = new MemberKey(type, propertyName);

			lock (lockInstance)
			{
				if (!typeFieldInfoCache.ContainsKey(key))
				{
					var cachedField = GetFieldByPropertyName(type, propertyName);

					typeFieldInfoCache.Add(key, cachedField);
				}
			}

			var field = typeFieldInfoCache[key];
			return field;
		}
Exemplo n.º 4
0
        public static FieldInfo Field(this Type type, string propertyName)
        {
            var key = new MemberKey(type, propertyName);

            lock (lockInstance)
            {
                if (!typeFieldInfoCache.ContainsKey(key))
                {
                    var cachedField = GetFieldByPropertyName(type, propertyName);

                    typeFieldInfoCache.Add(key, cachedField);
                }
            }

            var field = typeFieldInfoCache[key];

            return(field);
        }