コード例 #1
0
        static CachedMemberInfo _FindCachedType(string typeName)
        {
            if (cachedMembers == null)
            {
                cachedMembers = new Dictionary <string, CachedMemberInfo>(StringComparer.InvariantCultureIgnoreCase);
            }
            CachedMemberInfo result;

            if (!cachedMembers.TryGetValue(typeName, out result))
            {
                Type type   = EditorOneBuild.FindType(typeName);
                var  cached = new CachedMemberInfo()
                {
                    type = type
                };
                cachedMembers[typeName] = cached;

                if (type != null)
                {
                    cachedMembers[type.AssemblyQualifiedName] = cached;
                }
            }

            return(result);
        }
コード例 #2
0
		public static FieldInfo getField(Type type, Type fieldType, BindingFlags flags) {
			var key = new CachedMemberInfo(type, fieldType);
			FieldInfo fieldInfo;
			if (cachedFieldInfos.TryGetValue(key, out fieldInfo))
				return fieldInfo;

			foreach (var field in type.GetFields(flags)) {
				if (field.FieldType == fieldType) {
					cachedFieldInfos[key] = field;
					return field;
				}
			}
			return null;
		}
コード例 #3
0
        public static FieldInfo getField(Type type, Type fieldType, BindingFlags flags)
        {
            var key = new CachedMemberInfo(type, fieldType);
            FieldInfo fieldInfo;
            if (cachedFieldInfos.TryGetValue(key, out fieldInfo))
                return fieldInfo;

            foreach (var field in type.GetFields(flags)) {
                if (field.FieldType == fieldType) {
                    cachedFieldInfos[key] = field;
                    return field;
                }
            }
            return null;
        }