public static void MyTest()
    {
        // create the data context (to get data from)
        var ds = new UniversalDataSource(
            new FooDataSource(),
            new BarDataSource()
            );
        var realTimeDataContext   = new RealTimeDataContext(ds);
        var historicalDataContext = new HistoricalDataContext(ds, DateTime.MinValue);
        var fooId = new FooIdentifier("onetuhoenthuo");
        var barId = new BarIdentifier("onetuhoenthuo");

        // testing dispatch
        Assert.AreEqual(-1, realTimeDataContext.GetValue(fooId));
        Assert.AreEqual(-2, historicalDataContext.GetValue(fooId));
        Assert.AreEqual(-3, realTimeDataContext.GetValue(barId));
        Assert.AreEqual(-4, historicalDataContext.GetValue(barId));
    }
 public override DataSource GetDataSource(UniversalDataSource universalDataSource)
 {
     return(universalDataSource.FooDS);
 }
 /// <summary>
 /// returns the appropriate data source for THIS kind of identifier (abstractly)
 /// </summary>
 /// <param name="universalDataSource"></param>
 /// <returns></returns>
 public abstract DataSource GetDataSource(UniversalDataSource universalDataSource);
 public HistoricalDataContext(UniversalDataSource dataSource, DateTime asof) : base(dataSource)
 {
     AsOf = asof;
 }
 public RealTimeDataContext(UniversalDataSource dataSource) : base(dataSource)
 {
 }
 protected DataContext(UniversalDataSource dataSource)
 {
     DataSource = dataSource;
 }