В частности, для скриптов в ASP.NET уже есть класс ScriptManager, который поддерживает то, что вы пытаетесь сделать. Позвоните
Page.ClientScript.RegisterClientScriptInclude(key, url);
от вашего контроля с уникальным ключом для каждого скрипта, и фреймворк позаботится о том, чтобы избежать дубликатов. На ClientScriptManager
есть и другие похожие методы, которые могут быть полезны.
Если вам все еще нужно создать экземпляр вашего ControlManager, вы можете просто перечислить коллекцию Page.Controls
в поисках элемента управления этого типа, т.е.
public ControlManager GetControlManager()
{
foreach (Control control in Page.Controls)
{
if (control is ControlManager)
return (ControlManager)control;
}
ControlManager manager = new ControlManager();
Page.Controls.Add(manager);
return manager;
}
или вы можете попытаться сохранить экземпляр ControlManager в словаре Page.Items
.
Предупреждение: Я не проверял этот код, поэтому рассматривайте его как псевдокод.