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

简介:

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

目录
相关文章
|
4月前
gorm 多对多关系 以及 关联的操作
gorm 多对多关系 以及 关联的操作
100 0
|
3月前
|
数据库 Python
使用自关联方法处理多表关系
使用自关联方法处理多表关系
|
4月前
|
SQL 缓存 Java
Hibernae - 双向多对一关联关系映射
Hibernae - 双向多对一关联关系映射
47 0
|
数据可视化 uml
UML图讲解(关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系)
UML图讲解,关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系。
2792 0
UML图讲解(关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系)
|
12月前
|
关系型数据库 MySQL 数据库
SQLAlchemy关联表一对多关系的详解
SQLAlchemy关联表一对多关系的详解
|
11月前
|
SQL XML 数据格式
mybatis-关联关系&一对多关联&多对一关联&多对多
mybatis-关联关系&一对多关联&多对一关联&多对多
|
C语言
一对多表操作
一对多表操作
61 0
|
存储 Java 数据库连接
Hibernate的一对多映射的单向关联和双向关联(九)
Hibernate的一对多映射的单向关联和双向关联(九)
124 0
Hibernate的一对多映射的单向关联和双向关联(九)
举一个多对多关联的例子,并说明如何实现多对多关联映射
例如:商品和订单、学生和课程都是典型的多对多关系。可以在实体类上通过@ManyToMany注解配置多对多关联或者通过映射文件中的和标签配置多对多关联,但是实际项目开发中,很多时候都是将多对多关联映射转换成两个多对一关联映射来实现的。
1491 0