private Reader(Reader baseReader, OverrideIReader o)
 {
     _baseReader    = baseReader;
     _o             = o;
     NormalProperty = baseReader.NormalProperty;
 }
        public void PluggableFunction()
        {
            Reader r = new Reader();

            Assert.That( r.TheFunc( 13 ) == 1 );

            IReader r2 = r.CreateOverride( o => o.SettablePropertyByOverride = null );

            IReader r3 = r.CreateOverride( o => 
            {
                o.TheFunc = l => r.TheFunc( l ) * 3; 
                o.TheAction = s => Console.WriteLine( s );
                o.SettablePropertyByOverride = new List<string>(); 
            } );

            Assert.That( r2.TheFunc( 13 ) == 1 );
            Assert.That( r3.TheFunc( 13 ) == 3 );

        }
 public Reader()
 {
     _o = new OverrideIReader();
     _o.SettablePropertyByOverride = new List<string>();
     _o.TheFunc = DefaultFunc;
     _o.TheAction = DefaultAction;
     _baseReader = this;
     _sharedProperty = "I'm one and only one...";
 }
 private Reader( Reader baseReader, OverrideIReader o )
 {
     _baseReader = baseReader;
     _o = o;
     NormalProperty = baseReader.NormalProperty;
 }