В проекте, над которым я сейчас работаю, мы добавили класс-оболочку для доступа к объекту HttpSessionState
. Проблема в том, что текущее решение означает, что вам нужно написать какой-то код, чтобы обернуть функциональность. Я придумал следующее решениеНарушение типа перегрузки для создания шаблона кода в C#
/// <typeparam name="TKey">Class used for generating key into session state storage.</typeparam>
/// <typeparam name="T">Type of object to store.</typeparam>
public static class SessionManager<TKey, T>
{
static SessionManager()
{
_key = typeof(TKey).ToString();
}
private static readonly string _key;
public static string Key
{
get { return _key; }
}
// Other functions ... (Set, IsSet, Remove, etc.)
}
Теперь вы можете создать желаемое хранилище, просто используя
using StringStore= Test.SessionManager<System.Boolean, System.String>;
using StringStore2= Test.SessionManager<System.Version, System.String>;
StringStore.Set("I'm here");
StringStore2.Set("I'm also here");
код работает и хорошо, что вы можете легко создать класс-оболочку (один с использованием личных данных) и все статично. Код, однако, немного злоупотребляет системой типов, так что, может быть, это немного неясно? Прежде чем я добавил его я хотел бы получить обратную связь, так вот вопрос:
Если вы мы поддержания указанной системы и столкнулся код, приведенный выше, будет вам
- выследить и убить кто проверил файл в?
- Будьте немного раздражены попыткой быть умными, но пусть это скользит?
- Думайте, что это был хороший способ избежать кода шаблона?
Вы бы предпочли использовать инструмент для создания текста], например T4?
Спасибо за любые ответы,
Мадс
Я бы охотился на вас. Что это делает, кроме как избавиться от приведения после вызова 'HttpSessionState.Item'? – munificent