, , - . ,
public interface ISessionableObject
{
MyData Data { get; set; }
}
2 ,
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:
, , , - :
public class Adapter
{
public void DoSomething()
{
var data = Session["mydata"];
...
}
}
-
public class Adapter
{
private readonly ISessionableObject _session;
public Adapter(ISessionableObject session)
{
_session = session;
}
public void DoSomething()
{
var data = _session.Data;
...
}
}
Injection Dependency, StructureMap, , , , , , ,
public class AdapterUser
{
public void UsingPhone()
{
var adapter = Adapter(new HttpSessionedObject());
...
}
}
[UnitTest]
public class AdapterUserTest
{
[Test]
public void UsingPhone()
{
var adapter = Adapter(new DictionaryObject());
...
}
}