Through some negligence I have defined an interface which does contain actual code:
public interface IVermietbar
{
public Mieter VermietetAn { get; set; }
public DateTime VermietetUm { get; set; }
public abstract string ID { get; }
public bool VermieteAn(Mieter vermieteAn)
{
if (VermietetAn != null) return false;
VermietetAn = vermieteAn;
VermietetUm = DateTime.Now;
return true;
}
}
[....]
public class PKW : Kraftfahrzeug, IVermietbar {
public PKWKategorie Kategorie { get; set; }
public int KofferraumVolumen { get; set; }
string IVermietbar.ID => VIN;
public Mieter VermietetAn { get; set;}
public DateTime VermietetUm {get; set;}
public PKW(string name, string modell, string vin) : base(name, modell, vin) {}
}
Not only did this nonsense pass compiling, it does also seem to work at first glance.
Why does this code compile?