本文共 1585 字,大约阅读时间需要 5 分钟。
编程时遇到对象关联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(); } } } }本文转自BloodyAngel博客园博客,原文链接:http://www.cnblogs.com/zgynhqf/archive/2009/11/21/1607719.html,如需转载请自行联系原作者