public void WhenAskingForValue_ItChoosesToUseTheNonExplicitInterface()
        {
            var implementation = new ExplicitImplementation();

            Assert.Equal(1, implementation.GetValue());
            //Assert.Equal("value", implementation.GetValue());
        }
        public void y()
        {
            var implementation = new ExplicitImplementation();

            //You cannot call the method if both are explictedly implemented unless you first clear up what type it's representing
            //Assert.Equal("simple", implementation.GetName());
            ISimpleInterface   simple   = implementation;
            ISimiliarInterface similiar = implementation;

            Assert.Equal("simple", simple.GetName());
            Assert.Equal("similiar", similiar.GetName());
        }
        public void WhenUsedAsItsInterface_ItUsesTheExplicitImplementation()
        {
            ISimiliarInterface similiar = new ExplicitImplementation();

            Assert.Equal("value", similiar.GetValue());
        }