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); }
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; }