Anyhow, I was wondering what method should I use to keep my static data. As we know, we can :
1) implement a static class approach and use static ctor to initialize our static members
2) Use Singleton pattern:
public sealed class SashaSingleTon
{
object[] _data = new object[10];
static readonly SashaSingleTon _instance = new SashaSingleTon();
public static SashaSingleTon Instance
{
get { return _instance; }
}
private SashaSingleTon()
{
}
}
Well, the latter seems to allow us more flexibility and the one thing I adore most is that SashaSingleTon can implement interfaces while the static approach can’t.
Other than that there are other issues of safe threading , using the singleton as a parameter etc…

I believe Sasha does implement ISingleTone , yet she is not my Type.Cast