090923 T 一个对象一对多关联的问题
编程时遇到对象关联API的设计问题,感觉可能这种api的设计方案本身就有问题,所以目前还未有解决方案。
问题如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication
{
/// <summary>
/// 在NotImplement的方法/属性中填入相应内容,以保证程序不会抛出异常。
/// (就是:Parent属性,AddChild方法,RemoveChild方法。)
///
/// 不能修改其它代码。
/// </summary>
class Program
{
static void Main(string[] args)
{
Parent parentA = new Parent();
Parent parentB = new Parent();
Child child = new Child();
parentA.AddChild(child);
child.Parent = parentB;
Assert(parentA.Children.Count == 0, parentB.Children.Count == 1, child.Parent == parentB);
parentA.AddChild(child);
Assert(parentB.Children.Count == 0, parentA.Children.Count == 1, child.Parent == parentA);
child.Parent = null;
Assert(parentB.Children.Count == 0, parentA.Children.Count == 0, child.Parent == null);
}
static void Assert(params bool[] values)
{
foreach (var value in values)
{
if (value == false)
{
throw new Exception();
}
}
}
}
class Parent
{
private List<Child> _children;
public Parent()
{
this._children = new List<Child>();
}
public IList<Child> Children
{
get
{
return new System.Collections.ObjectModel.ReadOnlyCollection<Child>(this._children);
}
}
public void AddChild(Child child)
{
throw new NotImplementedException();
}
public void RemoveChild(Child child)
{
throw new NotImplementedException();
}
}
class Child
{
private Parent _parent;
public Parent Parent
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)