public static bool Generate(Type structType, string key, out FieldReadWriteHelper readWrite) { var dict = new Dictionary <FieldInfo, FieldReadWriteHelper>(); var fields = structType.GetFields(); try { foreach (var field in fields) { if (field.IsStatic == false && PropertyReadWriteGenerator.GetOne(field.FieldType, key + "." + field.Name, out var fieldReadWrite)) { dict[field] = fieldReadWrite; } } var helper = new StructReadWriteHelper { _readWrites = dict, _type = structType, }; readWrite = helper; } catch (Exception e) { Console.WriteLine(e); readWrite = null; } return(readWrite != null); }
public static FieldReadWriteHelper Generate(string key, IPropertyFieldReadWrite proxy) { var helper = new FieldReadWriteHelper { _proxy = proxy, _key = key }; return(helper); }
public static bool GetOne(Type pType, string key, out FieldReadWriteHelper propHelper) { if (HelperDefines.Contains(pType)) { propHelper = FieldReadWriteHelper.Generate(key, HelperDefines.Get(pType)); } else if (pType.IsValueType && StructReadWriteHelper.Generate(pType, key, out var readWrite)) { propHelper = readWrite; } else { propHelper = null; throw new Exception("仅支持string, int, float, bool字段和由以上四种字段组成的结构体"); } return(propHelper != null); }