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

本文共 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,如需转载请自行联系原作者

你可能感兴趣的文章
MyBatis在insert插入操作时返回主键ID的配置
查看>>
使用eclipse的todo标签管理任务
查看>>
iOS 开发自定义一个提示框
查看>>
CentOS6.5加域
查看>>
互联网+时代,移动互联网安全怎么自我防范呢?
查看>>
图片上传预览功能
查看>>
org.apache.log4j.Logger 详解
查看>>
Tiny Linux -- tce-load
查看>>
Android 中自定义控件和属性(attr.xml,declare-styleable,TypedArray)的方法和使用
查看>>
vue中get和post请求
查看>>
2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest A Email Aliases(模拟STL vector+map)
查看>>
Mr. Frog’s Game
查看>>
3.4可靠数据传输的原理
查看>>
多媒体通信-3-30-2018
查看>>
【Spring Boot&&Spring Cloud系列】Spring Boot中使用数据库之MySql
查看>>
【Spring Boot && Spring Cloud系列】那些Spring Boot中踩过的坑
查看>>
对XX系统的可用性和易用性改良
查看>>
大数据如何解决人工智能对文本挖掘的挑战
查看>>
updatepanel的属性
查看>>
.net 客户端调用java或.net webservice进行soapheader验证
查看>>