前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >090923 T 一个对象一对多关联的问题

090923 T 一个对象一对多关联的问题

作者头像
用户1172223
发布2018-01-26 10:22:58
3930
发布2018-01-26 10:22:58
举报
文章被收录于专栏:哲学驱动设计哲学驱动设计

编程时遇到对象关联API的设计问题,感觉可能这种api的设计方案本身就有问题,所以目前还未有解决方案。 问题如下:

代码语言:js
复制
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();
            }
        }
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2009-11-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档