试图创建一个嵌套对象。它的干净编码实践是啥?
Posted
技术标签:
【中文标题】试图创建一个嵌套对象。它的干净编码实践是啥?【英文标题】:Trying to create a nested object. What is the clean coding practice for it?试图创建一个嵌套对象。它的干净编码实践是什么? 【发布时间】:2022-01-14 03:18:57 【问题描述】:我有一个 JSON 结构,并试图为它创建一个相关的 c# 对象。
有 4 个嵌套对象。
看起来像这样:
public class One
private int a;
private int b;
public One(int a, int b)
this.a = a;
this.b = b;
public int A get => a;
public int B get => b;
public class Two
private int c;
private One one;
public Two(int c, One one)
this.c = c;
this.d = d;
public int C get => c;
public One one get => d;
public class Three
private int e;
private List<Two> twos;
public Three(int e, List<Two> twos)
this.e = e;
this.twos = twos;
public int E get => e;
public List<Two> twos get => twos;
public class CollectionOfObjects
private List<Three> collection;
public CollectionOfObjects(List<Three> collection)
this.collection = collection;
public List<Three> Collection get => this.collection;
为了创建CollectionOfObjects,首先我需要创建类一,然后是二,然后是三。
我希望我的代码看起来干净。哪种方法更好;我应该只调用一个构造函数并传递创建所有 4 个对象所需的所有参数,还是应该手动创建一、二、三和 CollectionOfObjects?
【问题讨论】:
你的问题不是很清楚。 A、B 和 C 具有完全相同的结构。具有 2 个数值的对象。目前没有嵌套。嵌套将是一个对象 A 包括 B,B 包括 C。你想实现什么? @Hazrelle 我的错。相应地编辑代码 这可能有点自以为是。一个编码员的“干净”代码可能是另一个编码员的意大利面条噩梦。 【参考方案1】:您可以嵌套对象构造,如下所示。但是如果结构像这个一样简单并且固定,我会以json
为例,它可以快速反序列化这种结构。
var data = new CollectionOfObjects(
new List<Three>()
new Three(3, new List<Two>()
new Two(2, new One(1, 1)),
new Two(3, new One(2, 2))
),
new Three(4, new List<Two>()
new Two(2, new One(1, 1)),
new Two(3, new One(2, 2))
)
);
【讨论】:
以上是关于试图创建一个嵌套对象。它的干净编码实践是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在鼓励使用特殊字符的密码等字段的 REST API 中,避免 WAF 误报的最佳编码实践是啥
Swift/JSONEncoder:包含嵌套原始 JSON 对象文字的编码类