编程时遇到对象关联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();
}
}
}
}