public ConstructorValueData(System.Reflection.ConstructorInfo ctor) { serializedType = new MemberData(ctor.DeclaringType); System.Reflection.ParameterInfo[] param = ctor.GetParameters(); parameters = new ParameterValueData[param.Length]; for (int i = 0; i < param.Length; i++) { parameters[i] = new ParameterValueData() { name = param[i].Name, typeData = MemberData.CreateFromType(param[i].ParameterType) }; } }
public ConstructorValueData(object value) { if (value == null) { throw new System.ArgumentNullException(nameof(value)); } var type = value.GetType(); var ctors = type.GetConstructors(); if (ctors.Length > 0) { var ctor = ctors[0]; for (int i = 0; i < ctors.Length; i++) { if (ctors[i].GetParameters().Length == 0) { ctor = ctors[i]; break; } } System.Reflection.ParameterInfo[] param = ctor.GetParameters(); parameters = new ParameterValueData[param.Length]; for (int i = 0; i < param.Length; i++) { parameters[i] = new ParameterValueData() { name = param[i].Name, typeData = MemberData.CreateFromType(param[i].ParameterType) }; } var initializers = new List <ParameterValueData>(); var members = type.GetMembers(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); for (int i = 0; i < members.Length; i++) { var member = members[i]; if (member is System.Reflection.FieldInfo field) { var val = field.GetValue(value); initializers.Add(new ParameterValueData() { name = field.Name, typeData = MemberData.CreateFromType(field.FieldType), value = val }); } else if (member is System.Reflection.PropertyInfo property) { if (property.CanRead && property.CanWrite) { var val = property.GetValue(value); initializers.Add(new ParameterValueData() { name = property.Name, typeData = MemberData.CreateFromType(property.PropertyType), value = val }); } } } } serializedType = new MemberData(value.GetType()); }