Qu'est-ce que vous voulez faire est de remplacer directement à l'aide d'une session dans vos adaptateurs. Vous voulez créer quelque chose d'interface comme
public interface ISessionableObject
{
MyData Data { get; set; }
}
puis créer 2 la mise en œuvre des classes similaires à
public class HttpSessionedObject : ISessionableObject
{
public MyData Data {
get { return Session["mydata"]; }
set { Session["mydata"] = value; }
}
}
public class DictionaryObject : ISessionableObject
{
private readonly Dictionary<string, MyData> _dict =
new Dictionary<string, MyData>();
public MyData Data {
get { return dict ["mydata"]; }
set { dict ["mydata"] = value; }
}
}
Edit:
Juste Incase vous avez une certaine confusion sur ce qu'il faut faire avec ce , Je suis sûr que vous avez quelque chose comme ça:
public class Adapter
{
public void DoSomething()
{
var data = Session["mydata"];
...
}
}
Au lieu de cela, vous voulez quelque chose comme ça
public class Adapter
{
private readonly ISessionableObject _session;
public Adapter(ISessionableObject session)
{
_session = session;
}
public void DoSomething()
{
var data = _session.Data;
...
}
}
Je recommande d'utiliser un cadre d'injection de dépendance comme StructureMap pour gérer la création de vos objets, mais c'est un sujet beaucoup plus sans rapport avec ce allant atleast avec l'injection de dépendance pauvres mans votre code sera similaire à
public class AdapterUser
{
public void UsingPhone()
{
var adapter = Adapter(new HttpSessionedObject());
...
}
}
Et
[UnitTest]
public class AdapterUserTest
{
[Test]
public void UsingPhone()
{
var adapter = Adapter(new DictionaryObject());
...
}
}