博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
090923 T 一个对象一对多关联的问题
阅读量:6338 次
发布时间:2019-06-22

本文共 1483 字,大约阅读时间需要 4 分钟。

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

转载地址:http://aaooa.baihongyu.com/

你可能感兴趣的文章
android代码混淆笔记
查看>>
Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) C. String Reconstruction 并查集
查看>>
BMP文件的读取与显示
查看>>
Flash文字效果
查看>>
各种排序算法总结篇(高速/堆/希尔/归并)
查看>>
使用c#訪问Access数据库时,提示找不到可安装的 ISAM
查看>>
Linux常用基本命令[cp]
查看>>
CSS 相对|绝对(relative/absolute)定位系列(一)
查看>>
关于 Nginx 配置 WebSocket 400 问题
查看>>
Glide和Govendor安装和使用
查看>>
Java全角、半角字符的关系以及转换
查看>>
Dubbo和Zookeeper
查看>>
前端项目课程3 jquery1.8.3到1.11.1有了哪些新改变
查看>>
UOJ#179. 线性规划(线性规划)
查看>>
整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)
查看>>
windows的服务中的登录身份本地系统账户、本地服务账户和网络服务账户修改
查看>>
JAVA中循环删除list中元素的方法总结
查看>>
redis 安装
查看>>
SQL some any all
查看>>
电子书下载:Programming Windows Identity Foundation
查看>>