lundi 2 mai 2016

C# - Extending a class with a new nested class

first question so I'm open to advice on effectively participating in the StackOverflow community as well as pertaining to the question.

I'm working on a text-based UI in C#. I have an abstract window class and an abstract control class, each of which implements common functionality for the types that inherit them (e.g. pop-up windows or text box controls). Currently, within a program that might implement the library, a developer would have to create window objects and control objects, and then add the controls to their respective windows, and the windows to a window manager class, like this:

var mainWindow = new MainWindow(...);
var textBox1 = new TextBox(...);
mainWindow.AddControl(textBox1);
WindowManager.Add(mainWindow);

This works, but it's a bit clunky. Since a control should never have to exist outside of a window, I was hoping to implement the control types as nested types. However, to maintain extensibility of the program, I'd like for there to be a way to extend the window class with new control types. My question is this: Should I use reflection, or rely on developers using container classes to extend the window class? Alternatively, is there a better way to structure the program than how it's currently laid out?

I've also considered using generics, e.g.:

public abstract class Window : DrawableObject, IWindow
{
    public void AddControl <T>(object[] constructorArgs) where T : class, IControl
    {

    }
}

I'm aiming for ease of implementation without sacrificing extensibility/loose coupling. Thanks in advance for any thoughts!





Aucun commentaire:

Enregistrer un commentaire