Как использовать частичное кэширование с динамически создаваемыми элементами управления? - PullRequest
2 голосов
/ 24 ноября 2010

У меня есть элемент управления, объявленный с атрибутом PartialCaching, например:

[PartialCaching(60 * 60 * 12)]
public class MyControl : Control {
    // control contents ...
}

, но я создаю его в коде, используя новое ключевое слово.Проблема в том, что если элемент управления находится в кеше, я не должен создавать его снова в следующий раз, но мне нужно добавить элемент управления в иерархию страниц, иначе ничего не будет отображаться.В псевдокоде мне нужно что-то вроде этого:

if (myControlIsCached) {
    var ctl = ???; // something that represents the cached control
                   // e.g. could be: new LiteralControl( myControlCachedData )
    this.Controls.Add( ctl );
}
else {
    var ctl = new MyControl();
    // setup control ...
    this.Controls.Add( ctl );
}

Как правильно это сделать?

Спасибо людям.

1 Ответ

1 голос
/ 24 ноября 2010

Я полагаю, вы хотите сделать что-то вроде этого:

Control possiblyCachedControl = LoadControl("path to control");
MyControlType control = null;
if (possiblyCachedControl is MyControlType)
{
    //control wasn't cached
    control = possiblyCachedControl as MyControlType;
}
else if (possiblyCachedControl is PartialCachingControl && ((PartialCachingControl)possiblyCachedControl).CachedControl != null)
{
    //control was cached
    control = (MyControlType)((PartialCachingControl)possiblyCachedControl).CachedControl;
}
if (control != null)
{
    //use the control
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...