I'm trying to create `Class<T>` with `List<T>` and `Method Add`. Where I can add `UserControls` and not instantiated them on add. Just pass them as a class and instantiate them when I need them. 

My problem is if I add them with `new UserControlBlaBla()`. Then for that `UserControl` constructor is called and I need to keep it in memory when I need it and if I need it and call method to run something on it when it is showed. 

I would like to make generic Class with generic list, and add that `UserControlBlaBla` class and instantiate it when I need it. 

I have this and it works, but when I need to create Manager class I don't know which type is it. If I put `Manager<UserControl>` and try to `Add(UserControlBlaBla)` it show `UserControlBlaBla` is a type, which is not valid in the given context. Which is okay, it's just works if I instantiate it because only then is type of UserControl. 

```
class Manager<T>{
    private List<T> _step;

    public void Add(T userControl)
    {
       _step.Add(userControl);
    }
}

```