2011-02-12 10 views
6

No es herencia, no son clases anidadas, no sé qué es y eso es lo que me trae aquí.C# - Objeto creado para poder acceder a los miembros del objeto que lo creó

Estoy escribiendo un programa y esta es la funcionalidad de alto nivel:

Principal() Crear un conjunto de 'A()' Tipo de objetos 'A()' s constructor crea 20 'B() 'objetos 'B()' s costructor crea 4 'C()' objetos

Ahora 'B()' quiere usar algunos de los miembros públicos de 'a()' y 'C()' quiere utilizar algunos de los miembros públicos de 'A()' y 'B()'

En otras palabras, A es Registro de control, B es una lista de 20 comandos y cada comando tiene hasta 4 c ondiciones. Ahora C() debería poder validar las condiciones, B() debería poder ejecutar el comando basado en la validación de C() y A() debería saber de alguna manera cuando se completan todas las B

Entonces la idea es que ciertos objetos se generen y que puedan usar miembros del objeto que los creó. Podría pasar información en el constructor pero eso se vuelve tedioso. Tiene que haber un diseño agradable para poder hacer lo anterior.

¿Alguien puede ayudar?

Respuesta

8

Podría pasar información en el constructor, pero eso se vuelve tedioso.

Este es un medio muy válido de tener este comportamiento, y un patrón muy común. La tediosidad es mínima, especialmente si diseñas tu código de forma limpia. Básicamente se cambia una línea de código de B bInstance = new B(); a B bInstance = new B(this);, etc.

A() debe saber cuándo alguna manera de todos los hostales se hacen

Yo recomendaría el uso de eventos para manejar esto. B podría incluir un evento "Completado" al que cada A se suscribe. Esto le permitirá saber exactamente cuándo se han completado las cosas.

Cuestiones relacionadas