private static DataSetModel MakeDataSetModel(AnalyzeContext context, ObjectSerializationInfo info) { List <StadModel> listModels = new List <StadModel>(); List <StadModel> singleModels = new List <StadModel>(); foreach (MemberSerializationInfo member in info.Members) { var memberObjectInfo = GetObjectInfo(context.CollectResult, member.Type); if (memberObjectInfo == null) { throw new Exception($"Member not found, {member.Type}"); } if (memberObjectInfo.Attributes.FirstOrDefault(a => a.Type.Contains(nameof(Stad.Annotation.IgnoreMemberAttribute))) != null) { continue; } StadModel memberModel = MakeStadModel(context, memberObjectInfo); if (memberModel == null) { throw new Exception($"Member create failed, {memberObjectInfo}"); } if (memberModel.Type.Contains("StadKeyValueCollection") == true) { listModels.Add(memberModel); } else { singleModels.Add(memberModel); } } foreach (StadModel model in context.AllModels) { foreach (MemberDefinition memberDefinition in model.Members) { var memberModel = context.AllModels.Find(m => m.Type == memberDefinition.Type); memberDefinition.SetModel(memberModel); } } return(new DataSetModel(info.FullName, new ReadOnlyCollection <StadModel>(listModels), new ReadOnlyCollection <StadModel>(singleModels))); }
} // TODO: Immutable 하도록 수정 public void SetModel(StadModel model) { Model = model; }