none
C#通过Collection中的Item获得拥有Collection的对象 RRS feed

  • 问题

  • 我在开发一个组件,组件(MyComponent)继承自Component,并拥有一个Collection<Item>的属性,而Item则是一个类型,而我现在希望能够从一个Item对象得到MyComponent对象。我现在的代码样例如下:
    public Item
    {
        public Item(MyComponent)
        {
            this.Owner = MyComponent;
        }
        public MyComponent Owner{get; private set;}
    }

    public MyComponent : Component
    {
        public MyComponent
        {
            this.Items = new Collection<Item>();
        }
        public Collection<Item> Items{get;private set;}
    }

    现在如果我通过代码的方式将Item添加到MyComponent.Items中去的话可以使用如下代码:
    MyComponent owner = new MyComponent();
    owner.Items.Add(new Item(owner));

    但是因为我的MyComponent最终是需要发布给开发人员使用的一个组件,因此我不希望开发人员每一次都需要通过编码的方式添加每一个Item,而是希望能够通过IDE开发环境中的集合设计器将所需的Item添加到MyComponent中去,但是我发现,IDE自动产生的代码只会按照如下的方式生成每个Item并添加到MyComponent中去:
    MyComponent owner = new MyComponent();
    Item item1 = new Item();
    owner.Add(item1);

    这样子就无法满足我最希望的能够在Item对象构造的时候就知道拥有Item的MyComponent对象了,有没有哪位能够告知我应当如何解决这种需要呢?
    johdan
    2009年10月25日 6:27

答案

  • 看到reflector了,我在想是不是需要重写Collection,因为Collection<T>.Add的方法竟然不是override的,如果重写就只能用new了,而且容易被误用。郁闷啊


    johdan
    • 已标记为答案 KeFang Chen 2009年10月29日 2:29
    2009年10月25日 14:23

全部回复